Max Verstappen held off Carlos Sainz in a thrilling battle to claim the first Canadian GP victory of his career in an action-packed race in Montreal.
A late Safety Car, which followed two earlier virtual interruptions, at the Circuit Gilles Villeneuve set up a gripping finale, but Verstappen superbly defended the Ferrari of Sainz - despite having older tyres on his Red Bull - to extend his world championship lead to 46 points.
Lewis Hamilton managed to find some pace - in a Mercedes he described as "undriveable" on Friday - to claim a first podium since the opening race of the season, while his team-mate George Russell followed in fourth to maintain his status as the only driver to finish in the points in every round in 2022.
Having been forced to start from the back row of the grid after taking a new power unit for the race, Charles Leclerc recovered to finish fifth in the other Ferrari, while Sergio Perez's hopes of challenging his Red Bull team-mate for the world championship suffered a major blow as an early gearbox failure ended a terrible weekend for the Mexican after he crashed out of qualifying on Saturday.
While Verstappen was always likely to extend his championship lead with his nearest challengers starting so far down the grid, his maturity and composure in denying Sainz a maiden F1 victory was an ominous showing in terms of his rapidly strengthening title defence.
"It was really exciting at the end," Verstappen said. "I was giving it everything I had and, of course, Carlos was doing the same. I could see he was pushing and charging, but when you're on the DRS it's a lot easier to charge. The last few laps were a lot of fun."
The 24-year-old Dutchman, who was driving in his 150th Grand Prix, has now won six of nine races this season, with two early-season retirements caused by reliability issues now seeming a distant memory.
Ferrari, aided by Sainz scoring an extra point for the fastest lap of the race, were at least able to narrowly reduce Red Bull's advantage in the constructors' championship to 76 points.
Fernando Alonso, who started second after a throwback performance in Saturday's wet qualifying provisionally finished the race in seventh, a place behind team-mate Esteban Ocon, after Alpine made a strange strategy call in opting to delay pitting the Spaniard.
His disappointment was compounded when he was later handed a five-second time penalty by the stewards for weaving on the straight in front of Valtteri Bottas, demoting him to ninth.
That decision saw Bottas promoted to seventh for Alfa Romeo, while his rookie team-mate Zhou Guanyu was boosted to eighth, the highest finish of his debut F1 campaign.
Aston Martin's Lance Stroll rounded out the top 10 at his home race.
Canadian GP: Race Result
1) Max Verstappen, Red Bull
2) Carlos Sainz, Ferrari
3) Lewis Hamilton, Mercedes
4) George Russell, Mercedes
5) Charles Leclerc, Ferrari
6) Esteban Ocon, Alpine
7) Valtteri Bottas, Alfa Romeo
8) Zhou Guanyu, Alfa Romeo
9) Fernando Alonso, Alpine*
10) Lance Stroll, Aston Martin
* Demoted from seventh after being given five-second time penalty.
How manic Montreal race unfolded
With Saturday's wet qualifying and Leclerc's engine issues having set up a topsy-turvy grid, there was guaranteed to be constant intrigue as F1 returned to Canada for the first time since 2019.
Despite having promised he would overtake Verstappen into the first corner, it was Alonso who came under early pressure as Sainz passed him on lap three, setting up what would become a race-long duel between the Red Bull and Ferrari.
How far Perez, who started 13th, could advance was one of the major questions going into the race, but his hopes were dashed on lap nine as he was forced to stop with a gearbox issue, triggering a Virtual Safety Car.
Verstappen opted to pit for hard tyres from the lead, as did Hamilton from fourth, but it quickly became clear that completing the 60 remaining laps on those sets would be highly unlikely.
The next twist came on lap 19 as Mick Schumacher, who had started sixth for Haas after a career-best qualifying performance, suffered an engine failure that caused him to stop in the exact same spot as Perez had, causing another virtual safety car period.
This time Sainz pitted from the lead, while Russell, who had impressively jumped from eighth to fifth in the opening laps, also made his first stop.
Alonso and Leclerc notably both stayed out as they attempted to hold track position, and were both ultimately left to make their only stops of the race outside of the safety car periods. Leclerc paid a particularly high price as a slow stop saw him come out behind a DRS train of midfield cars, all but ending his hopes of catching the Mercedes cars.
Verstappen, who emerged with a 10-second lead over Sainz, soon began to complain of a loss of grip and gave up on a one-stop strategy as he pitted once more on lap 43, handing the lead back to the Spaniard.
With Verstappen closing, Sainz was desperate for another opportunity to change his tyres, and it came as Yuki Tsunoda crashed at Turn 2, this time bringing out a full Safety Car as he struck the barrier. Sainz pitted but was able to close right up to Verstappen as the field bunched up for a thrilling 15-lap finale.
The long DRS zone on the home straight repeatedly enabled Sainz to close on Verstappen, but the Ferrari could not get close enough to make a genuine attempt at a pass.
His team-mate Leclerc was able to take advantage of the final interruption, as he closed on both Alpines and passed them to seal a solid recovery effort, which leaves him 49 points behind Verstappen in the world championship, and three back from Perez in second.
However, Ferrari remain winless since Leclerc triumphed at two of the opening three races of the season, with Red Bull having now won six successive races.
"I was pushing flat out," Sainz said. "I wasn't leaving any inches to the walls, the braking and I was pushing everything with the battery. I tried to pass Max.
"The positive thing is that we were quicker, faster all race and it just (needed) that little bit more to overtake around here."
Hamilton 'overwhelmed' after turnaround
Hamilton's third-place finish capped a remarkable turnaround after he was left despondent on Friday evening after a disappointing practice showing.
With Mercedes having already suffered what could prove to be a major blow on Thursday as the FIA issued a technical directive to address excessive bouncing, which is more likely to help than hinder their performance, Friday's lack of pace appeared to push the team to new lows.
Hamilton described the car as a "disaster", while team principal Toto Wolff and chief technical officer James Allison also offered little positivity about their prospects for the remainder of a season that has seen them unable to compete with Red Bull and Ferrari under the sports' new design regulations.
However, the absence of Perez and Leclerc from the front of the grid enabled Hamilton to qualify fourth in the rain on Saturday, and given Friday's comments, his race pace was remarkably strong as he remained in touch with Verstappen and Sainz throughout the race, albeit aided by the safety cars.
Hamilton said: "It's quite overwhelming to get this third place - 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.
"We're getting closer, so we've got to keep pushing and keep pushing, and hopefully we'll eventually be in the fight with these guys."
With many expecting the nature of the track in the next round of the season at Silverstone to suit Mercedes' troublesome W13, the display will offer Hamilton's loyal legion of fans renewed hope for the British GP.
When's the next F1 race?
After a two-week break, the 2022 season returns for a summer run of European races, starting with the British Grand Prix at Silverstone from July 1-3. All the action will be live on Sky Sports, with the race - which delivered one of the most dramatic moments of last season between Lewis Hamilton and Max Verstappen - starting at 3pm on Sunday.
Canadian GP: Max Verstappen holds off Carlos Sainz to seal maiden Montreal victory - Sky Sports