Before the dramatic final laps, Verstappen had pressured the McLarens throughout with Red Bull’s strategy.
The Dutchman took second place from Norris into the first corner, after the Briton made a slow start but, after initially pressuring Piastri on the first lap, the McLaren began to pull away as Verstappen started to struggle with his tyres.
Soon, Norris was on Verstappen’s tail and passed him on lap 13, using the DRS overtaking aid down the main straight, and Verstappen made his first stop on the following lap. This gave the game away to McLaren that he was now on a three-stop.
McLaren stuck to their two-stop plan, leaving Norris and Piastri out for a further seven and eight laps.
When Verstappen stopped again on lap 29, he soon regained the third place he had lost to Leclerc and began closing on the McLarens in front of him, at a pace that surprised McLaren. They were relieved to see his pace drop off again towards the end of his stint.
Norris, about three to four seconds back from Piastri most of the time, held Verstappen four seconds behind.
And when the Red Bull pitted for the third time on lap 47, McLaren responded with first Norris and then Piastri on subsequent laps.
After the pit stops, the three were running nose to tail, but Piastri began to edge away from Norris, who likewise distanced himself from Verstappen before the safety car intervened.
Behind Russell, Nico Hulkenberg scored a great result for Sauber by passing Lewis Hamilton’s Ferrari for fifth place after the restart.
Hamilton was downcast after the race, saying he had “no idea why it was so bad” and that it was his “worst race (for Ferrari), balance-wise.”
Team boss Frederic Vasseur later said Hamilton’s car had had a problem in the final stint that affected his pace. The Frenchman would not say what it was.
Racing Bulls’ Isack Hadjar took seventh from Alpine’s Pierre Gasly, and Fernando Alonso fought back from running off track into the gravel in the first stint – after locking up a front brake into Turn Five – to claim his first points of the season with ninth place, ahead of Verstappen.