World champion Max Verstappen overcame a sequence of problems on Sunday to lead his Red Bull team-mate Sergio Perez home and claim the lead in this year's title race on an afternoon of anguish for Charles Leclerc and Ferrari at a scorching Spanish Grand Prix.
His victory in a crushing Red Bull one-two was the 24th of his career and third in succession this season as he came home 13 seconds ahead of his Mexican partner with George Russell confirming Mercedes' revival by finishing third.
Leclerc, who had led the championship and dominated practice, set off convincingly from pole position until he was forced to retire his Ferrari with an engine failure.
He fell to second in the title race with 104 points to the Dutchman's 110.
Beaten at the start, Verstappen was blown off the circuit and had technical problems, but he overcame them to produce a furious drive aided by his team-mate's generosity for his second win at the Circuit de Catalunya, where he claimed his maiden victory as a teenager in 2016.
"I went off, when I had a lot of tailwind, and lost the rear," said the 24-year-old Dutchman. "My DRS (drag reduction system) was not always working and that made it very tough, but we managed to use strategy to get ahead.
"It was a difficult beginning, but a good end! I tried to stay focussed. It is not nice when stuff like that happens. I am very happy to win and happy for 'Checo' (Perez). It is a great result for the team."
A not so happy Perez was nonetheless satisfied for the team.
"I'm happy for my first podium in Spain," he said. "It was close and I'm happy for the team, but we need to speak later."
"It was a race of two halves," said Red Bull team boss Christian Horner. "Our pace was very strong and it was a shame for Charles (Leclerc) as I think it would have been an interesting fight."
He defended the team decision to order Perez to allow Verstappen to pass him. "It is our responsibility to bring both cars home. It was the right thing to do."
Russell said: "It was very tough today. I did all I could to hold Max off, but he did a great job. I would love to say Mercedes are back. I gave everything I could and I am proud to be standing here."
It was his sixth top five finish this year and his second podium.
Carlos Sainz came home fourth in the second Ferrari ahead of seven-time champion Lewis Hamilton, who produced an inspired drive in the second Mercedes after an opening lap collision, and Valtteri Bottas of Alfa Romeo.
Hamilton had to slow in the closing laps due to overheating problems, allowing home favourite Sainz to re-pass him to the delight of his home crowd.
"His race pace was stunning," said Mercedes team boss Toto Wolff.
Hamilton was voted 'driver of the day' by fans on the official Formula One website.
In front of a sell-out crowd of 121,670 spectators, the race began in hot conditions with an air temperature of 36 degrees and the track surface registering 49.
Leclerc made a near-perfect start to lead Verstappen into Turn One while, behind him, Sainz struggled with his anti-stall mechanism allowing both Russell and Perez to pass him.
Kevin Magnussen started well and climbed to seventh before attacking Hamilton on the outside of Turn Four where they clashed, the Dane going off into a gravel area after leaving Hamilton with a front left puncture.
In his damaged car, Hamilton, 19th, suggested he retired. "I would save this engine, guys, I'm sorry," he said. Mercedes told him to continue.
At the front, Leclerc built a clear lead before, in succession, Sainz and Verstappen went into the Turn Four gravel, blamed on a gusty wind by Red Bull.
On lap 27, Leclerc slowed and pitted in anguish. "Oh no, no," he cried, as he conceded the lead to Russell.
In the pits, Ferrari smothered him in sympathy.
Ferrari confirmed a power unit failure had undone Leclerc's race, a problem that also hit Guanyu Zhou's Ferrari-engined Alfa Romeo. For the Italians, it was a worrying trend.
"It's a hard race for us, but we must look at the positives," said Ferrari boss Mattia Binotto, as Perez, obeying orders, conceded the lead to his team-mate on lap 50.
Esteban Ocon was seventh for Alpine, ahead of Lando Norris of McLaren, two-time champion Fernando Alonso in the second Alpine and Yuki Tsunoda in his Alpha Tauri.