Lewis Hamilton secured victory at the Canadian Grand Prix for the fifth time in his career, slashing Nico Rosberg’s title advantage to just nine points.
Hamilton prevailed in a strategic scrap with Ferrari’s Sebastian Vettel on a dismal day for Rosberg.
Rosberg lost out at the start, suffered a slow puncture and spun on the penultimate lap as he took a low-key fifth.
Valtteri Bottas completed the podium places for Williams.
Vettel surged into the lead off the line as Hamilton and Rosberg battled into Turn 1, with light contact sending the Mercedes driver towards the grass.
Rosberg took to the escape road and re-joined the action back in 10th place, as Vettel stormed clear up front.
Vettel, however, erred under braking for the final chicane and had to take to the escape road and only narrowly held on to his lead.
Ferrari pitted Vettel at the end of lap 11 for a set of Super Soft tyres – signalling that the German would be on a two-stop strategy – enabling Hamilton to inherit the lead.
Vettel filtered back in fourth place but made light work of Daniel Ricciardo and Max Verstappen across successive laps to move into second, 11 seconds adrift of Hamilton.
Vettel closed the gap to under six seconds when Hamiton made his sole stop on lap 24 for a set of Soft tyres, coming back out in second place.
Vettel stayed out until lap 37 and took on a set of Soft tyres, emerging seven seconds back on Hamilton.
Vettel gradually closed the gap to Hamilton and loomed within four seconds but made a mistake approaching the chicane and had to take to the run-off, dropping two seconds.
Vettel repeated the error a couple of laps later and lost another second, as Hamilton cruised clear up front.
Bottas stopped just once to finish on the podium in Canada for a second successive season, as Verstappen was resilient in defence against Rosberg.
Rosberg had negotiated his way back up to fourth spot but suffered a slow puncture and dropped back to seventh.
Rosberg overhauled Kimi Räikkönen and Ricciardo but found Verstappen a tougher challenge and the Dutchman held his line into the chicane.
Rosberg had a run approaching the chicane on the penultimate lap but spun under braking, though was able to retain fifth place.
Räikkönen and Ricciardo were sixth and seventh, ahead of Nico Hülkenberg, Carlos Sainz Jr. and Sergio Pérez.
Fernando Alonso missed out on point for McLaren as he classified in 11th spot, ahead of Daniil Kvyat, Haas pair Esteban Gutiérrez and Romain Grosjean, with Marcus Ericsson 15th for Sauber.
Kevin Magnussen was 16th for Renault, in front of Pascal Wehrlein, Felipe Nasr – who was spun by Magnussen at the start – and Rio Haryanto.
Jenson Button lasted 11 laps before he suffered a small fire from the back of his McLaren and pulled to the side of the circuit along the back straight.
Jolyon Palmer was able to complete only a handful more laps before Renault retired the rookie due to a water leak.
Felipe Massa’s run of points came to an end when he pulled into the pits mid-distance.