Lewis Hamilton's love affair with the Canadian Grand Prix reached new heights as he won the race for a sixth time and slashed Sebastian Vettel's Formula One championship lead to 12 points.
After watching Ferrari sweep to a one-two finish two weeks ago in Monaco, Mercedes hit back with a dominating display as Hamilton cruised to his 56th career win, a leisurely 19.7 seconds in front of team mate Valtteri Bottas.
It was Hamilton's third victory of the season and also his third in a row at the sun-bathed but windswept Circuit Gilles Villeneuve in Montreal.
"I had my first pole here, I had my first win here 10 years ago and to repeat it this weekend is incredibly special," said Hamilton.
"I really have to thank my team for making this possible. The guys back at the factory have worked so hard to really fix what we had in the last race, bring it here and really give it to the Ferraris. I'm over the moon."
The Briton might have cut Vettel's lead further if not for an inspired charge by the German who fought his way to fourth after a damaged front wing forced a pitstop and dropped him to the back of the field early on.
Red Bull's Australian Daniel Ricciardo came home third, for the third race in a row, to complete the podium.
That gave his team something to cheer after young Dutchman Max Verstappen had his race come to a premature end with mechanical problems while running second and challenging Hamilton for the lead.
Force India enjoyed a great weekend in Canada with Mexican Sergio Perez taking fifth ahead of French team mate Esteban Ocon, who was not happy at the finish.
Canadian teenage rookie Lance Stroll answered some of his critics by scoring his first points in Formula One for Williams, crossing the line in ninth place to the cheers of a sell-out home crowd.
But there was yet more disappointment for Fernando Alonso and McLaren when the double world champion's engine gave up yet again two laps from the finish, leaving the struggling outfit still the only team on the grid to yet score a point.