Lewis Hamilton's love affair with the Canadian Grand Prix continued unabated on Sunday 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.
"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, who also started from pole for the sixth time in Canada.
"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.
"Obviously, we’re not the quickest car on the track at the moment but we’re managing to put it together on a Sunday," said Ricciardo. "It’s nice obviously. Max had his problems today, I’m sure he would have been up there as well.
"We’ll try to get both cars on the podium soon."
Hamilton, starting from pole for a sixth time, got off to a clean start but behind him there was the usual Montreal first lap chaos.
Vettel, starting alongside, got caught in a sandwich as Bottas shot past him on one side and Verstappen on the other, clipping the German's front wing.
"I think it was clear that today we could have been better than fourth, but that's how we finished and what is done is done," said Vettel.
"Looking back at the start, Bottas and I were trying to go from the inside when Max came around but these things can happen.
"Then, with the safety car on track I did not realize that the damage to the front wing was as bad as it actually was, we only noticed it at full speed."
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.
It has been a difficult debut for Stroll, the son of one of Canada's richest men, who has had some sharp criticism for his modest results.
But the 18-year-old showed his skill to become the first Canadian not named Villeneuve to score points in a Formula One race.
Ferrari's late great Gilles Villeneuve, after whom the Montreal circuit is named after, won the Canadian Grand Prix in 1978 while his son Jacques was the 1997 world champion.
"It’s just special. It feels so good in so many ways," said Stroll. "It’s been a tricky beginning of the season, we’ve known that we’re capable of doing it but there’s just been so much stuff in the way of being able to just get points."
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.
McLaren remain the only team yet to score a point.