Red Bull's Max Verstappen held off Carlos Sainz's charging Ferrari to win the Canadian Grand Prix on Sunday and surge 46 points clear in the Formula One world championship after his 150th race.
The 24-year-old Dutch driver took his 26th career win 0.9 of a second ahead of Spaniard Sainz, who closed the gap and set up a thrilling final chase thanks to a safety car deployment.
Seven times world champion Lewis Hamilton completed the podium for Mercedes in a remarkable turnaround for the Briton, who had dismissed his bouncing car as undriveable only days earlier.
Sainz collected the bonus point for fastest lap as the Italian team trimmed the gap to runaway leaders Red Bull in the constructors' championship to 76 points from a previous 80.
"It was really exciting at the end. I was giving it everything I had and, of course, Carlos was doing the same," said Verstappen after his sixth win of the season and Red Bull's sixth in succession.
"I could see he was pushing and charging, but when you're on the DRS (drag reduction system) it's a lot easier to charge. The last few laps were a lot of fun."
The victory was his first in Canada.
Sainz, who had fresher tyres than Verstappen, said he had tried everything he could to end his long wait for a first win at a circuit named after Canada's late Ferrari great Gilles Villeneuve.
"We were very, very close to winning today. I will take the positives and keep trying in the next one," he added.
Hamilton said the result, with team mate George Russell fourth, was "quite overwhelming" and gave him and the team a lot of hope for the rest of the season.
It was his first podium since third place in Bahrain in the opening race.
"It's been such a battle this year with the car, but we continue to stay vigilant, focused and never giving up, and that's something I'm proud of," he said.
"We're getting closer, so we've got to keep pushing and hopefully we'll eventually be in the fight with these guys."
Verstappen's Mexican team mate Sergio Perez, who remains second overall, retired and triggered a virtual safety car after just eight of the 70 scheduled laps when his car became stuck in gear.
Ferrari's Charles Leclerc started 19th after engine penalties and ended the day fifth, but now 49 points behind Verstappen.
Verstappen had led the field away from pole position, with Alpine's double world champion Fernando Alonso alongside on the front row after a wet Saturday qualifying but unable to make good on his threat to seize the lead into the first corner.
The 40-year-old Spaniard was passed by Sainz on lap three and finished the race seventh, behind team mate Esteban Ocon in sixth, but was demoted to ninth after stewards handed him a five second post-race penalty for weaving on track.
Valtteri Bottas, who was slowed by Alonso's robust defence, moved up to seventh for Alfa Romeo with Chinese team mate Guanyu Zhou eighth.
Canadian Lance Stroll took the final point for Aston Martin on a sunny afternoon.
There was disappointment for Haas after Kevin Magnussen and Mick Schumacher lined up fifth and sixth on the grid but failed to score.
Magnussen had to pit to replace a damaged front wing on lap seven and Schumacher, still chasing his first point in Formula One, slowed and retired on lap 19.
That triggered the second virtual safety car of the afternoon, with Sainz pitting from the lead he had inherited when he stayed out during the Perez incident while Verstappen came in for fresh tyres.
The real safety car was deployed after AlphaTauri's Yuki Tsunoda went into the barriers on lap 48, with Sainz making his second stop and keeping Verstappen in his sights ready to attack over the last 16 laps.
From 46 points behind to 46 ahead, Verstappen refuses to tempt fate
Max Verstappen has gone from being 46 points behind to 46 points ahead this season but, with the Formula One campaign yet to reach the halfway mark, the Red Bull driver refused to tempt fate in Canada on Sunday.
His sixth win from nine races - and Red Bull's sixth success in a row and seventh in all this season - suggests the 24-year-old Dutch driver is cruising towards his second successive championship.
Verstappen insisted he had won, in his 150th race, despite not being fastest, however.
"It's still a very long way," he said after a race heavily influenced by a late safety car that brought Ferrari's Carlos Sainz back into play on fresher tyres and with 16 laps of racing remaining.
"I know the gap of course is quite big, but I also know that it can switch around very quickly. I mean, (after) race three I was 46 behind, so we just need to stay calm, we need to focus and we need to improve because today we're not the quickest.
"It swings a bit, like last weekend (in Azerbaijan) it looked good in the race, now it didn't look as good but we still managed to win and that I think is also a quality."
Verstappen, who leads his own team mate Sergio Perez, also had to contend with a radio that stopped working.
Red Bull have only once before racked up six successive wins, with four times world champion Sebastian Vettel managing a run of nine in 2013, and Ferrari will be doing their best to stop it stretching to seven.
Spaniard Sainz did his best, chasing Verstappen to the chequered flag for second place, but the Italian team were hampered by having Charles Leclerc start on the back row after engine penalties.
Leclerc, who held that 46 point lead after winning two of the season's first three races, still came through the field to finish fifth.
"It was a tough race. I mean, I expected to have a little bit more pace. But we seemed to lack a little bit compared to Carlos," said Verstappen.