Lewis Hamilton won the Canadian Grand Prix while Formula 1 championship leader Nico Rosberg lost further ground with fifth place after an eventful race.
Hamilton finished five seconds clear of Ferrari's Sebastian Vettel, who had a shot at victory following a stunning start, but failed to make a two-stop strategy work at the Circuit Gilles Villeneuve in comparison to the one-stop for Hamilton.
It means after seven of the 21 races this year, Hamilton is now just nine points adrift of Rosberg, who spun near the end trying to pass Max Verstappen for fourth, with the world champion taking 34 points out of the latter's early advantage over the last two races.
Valtteri Bottas also managed just a one-stop strategy to claim third in his Williams, scoring both his and the team's first podium since Mexico last year.
Hamilton made another poor start from pole, while from third on the grid Vettel blasted by the two Mercedes drivers to take the lead.
Behind Vettel, Hamilton held the inside line into Turn 1 where he and Rosberg bumped wheels as the latter attempted to pass around the outside.
The slight collision, however, was enough to force Rosberg to go off the track, dropping him to ninth place and facing a battle to fight through the field in the cold conditions.
Rosberg lost another place before the end of lap one to fall to 10th, leaving Vettel and Hamilton to fight for the win and a battle of strategies between Ferrari and Mercedes.
Ferrari caused a surprise when Vettel pitted at the end of lap 11 and under a virtual safety car period caused by Jenson Button's engine blowing on his McLaren, the Briton pulling his car onto a grass verge.
In switching from the ultra-soft tyre to the super-soft, it was apparent Vettel would have to pit again with the soft compound being the mandatory set for the race designated by Pirelli.
At that stage Vettel dropped to fourth behind Red Bull pair Max Verstappen and Daniel Ricciardo, although come the end of lap 18 he had cleared both to move up to second behind Hamilton.
Six laps later Hamilton made his only stop, taking on the soft tyres, leaving him with 46 to the end, with the prediction from Pirelli being it could run for 50.
It was another 13 before Ferrari pitted Vettel again to take on the soft tyres, retaining his second place and emerging 7.8s behind Hamilton.
Vettel closed the gap to 4.3s behind Hamilton after 55 laps, but he locked up into the final chicane on lap 56 and again on lap 61 to drop him to 6.7s adrift, effectively ending his bid for victory.
Red Bull's Max Verstappen managed to hold off Rosberg to finish fourth, whose attempt at a pass into the final chicane on lap 69 ended with him spinning off track, albeit managing to keep his engine running.
Rosberg had had a shot at third earlier in the race, but he suffered a slow puncture to his right-rear tyre with 19 laps remaining that dropped him to seventh at the time.
Kimi Raikkonen was sixth ahead of Daniel Ricciardo, the only two other drivers to finish on the same lap as Hamilton.
Completing the points-scoring positions were Force India duo Nico Hulkenberg and Sergio Perez in eighth and 10th, sandwiching Toro Rosso's Carlos Sainz who had started 20th after taking a gearbox penalty before the start.
Also on the list of retirees alongside Button were Renault's Jolyon Palmer on lap 18 with a water leak and Williams' Felipe Massa after 37 laps with engine issues.
CANADIAN GRAND PRIX RESULT
|4||Max Verstappen||Red Bull/Renault||70||53.020s|
|7||Daniel Ricciardo||Red Bull/Renault||70||1m03.634s|
|8||Nico Hulkenberg||Force India/Mercedes||69||1 Lap|
|9||Carlos Sainz Jr.||Toro Rosso/Ferrari||69||1 Lap|
|10||Sergio Perez||Force India/Mercedes||69||1 Lap|
|11||Fernando Alonso||McLaren/Honda||69||1 Lap|
|12||Daniil Kvyat||Toro Rosso/Ferrari||69||1 Lap|
|13||Esteban Gutierrez||Haas/Ferrari||68||2 Laps|
|14||Romain Grosjean||Haas/Ferrari||68||2 Laps|
|15||Marcus Ericsson||Sauber/Ferrari||68||2 Laps|
|16||Kevin Magnussen||Renault||68||2 Laps|
|17||Pascal Wehrlein||Manor/Mercedes||68||2 Laps|
|18||Felipe Nasr||Sauber/Ferrari||68||2 Laps|
|19||Rio Haryanto||Manor/Mercedes||68||2 Laps|
|-||Jolyon Palmer||Renault||16||Water leak|
|14||Carlos Sainz Jr.||18|