Red Bull Racing’s Max Verstappen came from behind to snatch victory at Zandvoort following a late safety car intervention.
Lewis Hamilton used a different strategy to move into contention for the win, but his chances were undone by a questionable tyre call during the caution period and slipped back to fourth.
George Russell and Charles Leclerc both passed the seven-time world champion in the closing stages to finish second and third.
Verstappen had looked in control early on after leading from pole at the start and managing a one-second gap to Leclerc, while Carlos Sainz faced pressure for third from Hamilton.
Sainz was the first of the front-runners to pit on lap 15, but lost time after his Ferrari team initially did not have a new front-left tyre ready.
Perez, who had also pitted behind, added to the drama by running over a Ferrari wheel gun as he left his pit box, but avoided any damage.
Verstappen and Leclerc soon came in to switch from soft to medium compound tyres, allowing the medium-shod Mercedes duo Hamilton and Russell to run first and second.
Verstappen used his fresher tyres to catch and pass Russell, and regained his place at the front once Hamilton pitted for hard tyres with a 3s lead.
Planning on running to the end on his tyres, Hamilton showed strong pace to strengthen his victory chances, and fought his way past Perez for third after a feisty battle.
On a similar strategy to Hamiton, Russell moved to fourth, some 6s behind his team-mate, after Perez pitted for a second time.
Also due to stop again, Verstappen held a comfortable lead over Leclerc, but both did not have enough of a gap in hand to the Mercedes duo.
But the race was turned on its head after an issue for Yuki Tsunoda triggered the first a virtual safety car period. The Alpha Tauri driver stopped on track moments after pitting, but got going again and returned to the pits. After his team refastened his belts, Tsunoda rejoined but stopped on track for second time and retired.
With the race neutralised, Verstappen used the opportunity to pit, but remained in front after both Mercedes drives also pitted, with Leclerc emerging from his own pitstop in fourth.
The safety car was then deployed after Alfa Romeo’s Valtteri Bottas ground to a halt before turn one.
This second second intervention led to another flurry of activity, with Verstappen joining many in pitting for softs, but Hamilton remained on his medium tyres to reclaim the lead.
But his advantage was short-lived. Verstappen got a superior restart with 11 laps to go to sweep around the outside of Hamilton into turn one before pulling clear, much to the delight of the home crowd.
Vulnerable to the soft runners behind, Hamilton faded, with Russell almost clipping the rear of his car while taking second on the pit straight.
Perez came home fifth ahead of Alpine’s Fernando Alonso and McLaren’s Lando Norris. A 5s penalty for an unsafe release during the safety car period further thwarted Sainz, who was classified 8th.
Esteban Ocon (Alpine) and Lance Stroll (Aston Martin), were the other points finishers in ninth and 10th.
Featured image credit: @f1 official twitter