Sebastian Vettel and Ferrari were denied a first win of the 2019 Formula 1 season after a five-second time penalty handed Canadian Grand Prix victory to Lewis Hamilton.
Vettel led the majority of the race in Montreal but was demoted to second by a penalty picked up after running wide at the first chicane and almost colliding with Hamilton as he rejoined.
That handed Hamilton his fifth win of the season and maintained Mercedes' 100% victory record after seven races.
Vettel had a big enough advantage to hold on to second, as Ferrari team-mate Charles Leclerc completed the podium.
Ferrari was in contention to end its winless start to the campaign after Vettel kept Hamilton at arm's length through the opening stint, then came under increasing pressure in the second half of the race.
Hamilton dropped to almost five seconds behind Vettel by virtue of extending his first stint by a couple of laps, but had stronger pace on the hard tyres and quickly caught the Ferrari.
In nine laps he eradicated Vettel's lead and moved within DRS range, then briefly fell out of it again after a lock-up at the hairpin.
But the two started lap 48 of the 70 Hamilton was closer to Vettel again, and Vettel took to the grass at the first chicane after briefly losing the rear of his car on corner entry.
Vettel skated over the grass and rejoined just as Hamilton tried to dart into the gap between the scrambling Ferrari and the wall on the exit of the corner.
Hamilton backed out to avoid a collision and Vettel maintained his lead, but was punished after a lengthy investigation by the stewards.
Vettel never came close to building a big enough gap to cancel out the penalty and complained over the race that the officials were "stealing the race" from Ferrari.
Hamilton finished 1.4s behind at the flag, which became a 3.6s-winning margin and extended his points lead to 29 points - after a pre-race scare when his team rushed to replace his car's hydraulics system.
Leclerc ended up one second behind Vettel in the final classification, with Ferrari's first double podium finish of the season scant consolation for the Italian team.
Valtteri Bottas was left a distant fourth place as a Mercedes driver finished off the podium for the first time in 2019.
Bottas only qualified sixth and fell behind the second Renault of Nico Hulkenberg on lap one, then struggled to make progress on medium tyres with his immediate rivals on softs.
He eventually worked his way through to fourth and picked up a bonus point for fastest lap after building up a big enough gap for a free second pitstop near the end.
Max Verstappen recovered to fifth place after starting ninth, running a long first stint on hard tyres before passing the Renaults of Daniel Ricciardo and Hulkenberg after switching to mediums at the end.
Ricciardo withstood a late assault from Hulkenberg to finish sixth, with Pierre Gasly only eighth in the second Red Bull despite starting fifth - having lost ground in traffic after an early pitstop.
Lance Stroll fought through to ninth and banked two points in his home grand prix, despite his Racing Point being fitted with an older-spec engine after a fiery failure in final practice.
Daniil Kvyat completed the point scorers for Toro Rosso.
Despite an ultra-hot day that prompted major braking and temperature problems for the teams, there were only two retirements.
Lando Norris was first to stop, suffering a peculiar failure after eight laps that left his McLaren on three wheels, while Alex Albon - who picked up wing damage at the start - retired 11 laps from the finish.
|5||Max Verstappen||Red Bull/Honda||70||57.655s|
|6||Daniel Ricciardo||Renault||69||1 Lap|
|7||Nico Hulkenberg||Renault||69||1 Lap|
|8||Pierre Gasly||Red Bull/Honda||69||1 Lap|
|9||Lance Stroll||Racing Point/Mercedes||69||1 Lap|
|10||Daniil Kvyat||Toro Rosso/Honda||69||1 Lap|
|11||Carlos Sainz Jr.||McLaren/Renault||69||1 Lap|
|12||Sergio Perez||Racing Point/Mercedes||69||1 Lap|
|13||Antonio Giovinazzi||Alfa Romeo/Ferrari||69||1 Lap|
|14||Romain Grosjean||Haas/Ferrari||69||1 Lap|
|15||Kimi Raikkonen||Alfa Romeo/Ferrari||69||1 Lap|
|16||George Russell||Williams/Mercedes||68||2 Laps|
|17||Kevin Magnussen||Haas/Ferrari||68||2 Laps|
|18||Robert Kubica||Williams/Mercedes||67||3 Laps|
|-||Alexander Albon||Toro Rosso/Honda||59||Withdrew|
|7||Carlos Sainz Jr.||18|