Leclerc had been leading the race by more than 13 seconds when he suffered a sudden loss of power on lap 27 and was forced to retire, his first failure to finish since last August.
But Verstappen was having troubles of his own. The Dutchman had been blown into the gravel by a gust of wind, dropping him behind George Russell and teammate Sergio Perez, and subsequently discovered his DRS flap was broken, opening only intermittently when he tried to use it to overtake.
Perez was ordered to let his teammate past, but Russell put up a stern defence, and a battle on lap 24, with Russell hanging around the outside of Verstappen as the Dutchman dived into the first corner, was a brilliant piece of racing.
It was infuriating for Verstappen, however, and after more failed attempts the team decided to switch his strategy from two stops to three so he could exploit his car’s superior pace in clear air.
The tactics worked, and after two flat-out stints on the soft and medium tyres, he made his final pit stop and rejoined the race fractionally ahead of Russell, who had to manage his tyres more to get them to the end with one fewer stop.
Perez was left in the lead, but for a second time he was asked to make way, clearing Verstappen’s path to victory and a six-point championship lead.
“A difficult beginning but a good end,” Verstappen summarised. “Very happy to win and very happy of course for Checo [Perez].”
Perez stuck to the team line after the race but was clearly disappointed not to be repaid the favours paid to Verstappen earlier in the race.
“I think it was close, but in the end it’s a great team result, and I’m happy for that,” he said of his victory aspirations.
Red Bull Racing’s double score also put the team ahead in the constructors standings with a 26-point margin over Ferrari.
George Russell finished third, and though he benefited from Leclerc’s retirement, it was the first Mercedes podium of the season achieved on genuine frontrunning pace, the team having made significant progress on the problems that have plagued the car so far this season.
“I’m so proud to be standing here,” Russell said. “The guys have worked so hard. To everyone at [Mercedes factories] at Brackley and Brixworth: thank you.”
Carlos Sainz finished fourth after a gust of wind spun his car off the road on the sixth lap, dropping him from fifth to 11th, but a strong middle stint earned him the places back to reduce the damage done to Ferrari on a difficult afternoon.
Lewis Hamilton was an excellent fifth despite a first-lap crash dropping him to 19th and way off the pace after an emergency pit stop for a puncture.
The Briton was the fastest driver of the field in the middle of the race, highlighting again Mercedes’s progress this round, and would have finished fourth had a water leak in the power unit not required him to slow markedly in the final few laps.
Valtteri Bottas finished sixth for Alfa Romeo on a slower two-stop strategy ahead of Alpine’s Esteban Ocon and McLaren’s Lando Norris.
Fernando Alonso was ninth, doubling his season haul with another two points, and Yuki Tsunoda completed the top 10.
Sebastian Vettel beat Daniel Ricciardo to 11th ahead of Pierre Gasly.
Mick Schumacher couldn’t convert 10th on the grid to points, leaving him still scoreless for the year.
Lance Stroll was 15th for Aston Martin ahead of Nicholas Latifi, who beat Williams teammate Alex Albon for his first time this season, the pair split by Kevin Magnussen.