Hamilton's third victory of the 2017 season after a performance to forget in Monaco saw him trim Sebastian Vettel's world championship lead to 12 points after his key title rival battled back to finish a hard day in fourth.
The Briton's third pole in a row in Canada equalled Michael Schumacher's record of six at the Circuit Gilles Villeneuve, but it took a stunning lap worthy of his late Brazilian hero Senna to do it. The 18-year-old Williams driver was born and raised in Montreal but will probably care more about the fact that he has scored his first points in Formula One than where he registered them.
"I had my first win here and my first pole", Hamilton said.
Vettel's day hit a snag at the very first turn when he was clipped as the Red Bull of Max Verstappen flew down the outside and he was forced to pit after part of his front wing flew off.
Mishaps at the start put Hamilton and Bottas home free in what had been expected to be a tight race with the Ferraris, who were coming off a one-two finish two weeks ago in Monaco.
"I wanted to be on the podium in the end", Vettel said. He was the one who inspired me to be where I am today. Hamilton pulled away cleanly at the start of the race and there was no catching up with him from there.
"I saw he was in sixth and I was like, "that's great.' Then he was fifth I was like 'oh, I hope he stays there.' Then he got to fourth I thought 'I hope he doesn't get any higher than that"!"
Having cut Vettel's championship lead down to 12 points, Hamilton says Mercedes is now back where it needs to be to sustain its title challenge.
"We've really solidified our strength", he told Sky Sports F1 after the race.
The German and Hamilton now have three wins each, with Bottas taking the other. There was no stone left unturned: aero, mechanical balance, set-up work, the tyres themselves, the way the drivers drove the auto. "I wasn't quick in Russian Federation so for us getting the vehicle where we need it is going to be a challenge", he said. "They may be super-quick at the next race in Baku, so to close the gap is going to take a lot, but anything can happen".
Ferrari's Sebastian Vettel, a four-time world champion, finished fourth on Sunday - the first time this season that he has finished outside the top two.
Hamilton will be looking to snatch that lead from Vettel at Azerbaijan where the next race will be held from 23rd-25th June 2017.
The safety vehicle came out on the opening lap when, on the first turn, Romain Grosjean's Haas nudged Carlos Sainz's Toro Rosso, which plowed into the side of Stroll's Williams teammate Felipe Massa.