His team-mate Sergio Perez led from pole position, running medium tyres like the majority of the field, while Verstappen started ninth on hards after his qualifying woes restricted him to ninth on the grid.
As expected, Verstappen worked his way through the field, and led the middle stages of the race after Perez pitted.
After Verstappen stopped, he rejoined just behind Perez, but quickly passed his team-mate to ensure his third victory of the year.
2023 F1 Miami Grand Prix results
How the 2023 F1 Miami Grand Prix unfolded
Perez held his pole position advantage into Turn 1, leading ahead of Fernando Alonso (Aston Martin) and Carlos Sainz (Ferrari). Behind them, Pierre Gasly (Alpine) and George Russell (Mercedes) passed Kevin Magnussen (Haas) to run fourth and fifth respectively. Further back, Lando Norris (McLaren) was tagged from behind by Nyck de Vries (AlphaTauri) at the first corner, dropping them to the tail of the field.
Charles Leclerc (Ferrari) passed Magnussen for sixth at Turn 11, while Verstappen stayed in ninth on lap one, having started on the hard tyre. But he leapt ahead of both Leclerc and Magnussen at the start of lap 4 to run sixth, with Magnussen taking advantage to vault back in front of Leclerc as they briefly ran three-wide.
Perez pulled clear of the DRS range of Alonso out front, while Sainz ran a close third. Verstappen outbraked Russell into Turn 17 on lap eight and repeated the move on Gasly a lap later to take fourth. Russell also passed Gasly a few corners later, at Turn 1 at the start of lap 10.
Verstappen was 4.6s behind leader Perez at this point and set about closing the gap to Sainz. Verstappen DRS-ed past Sainz into Turn 11 on lap 14 and repeated the move on Alonso a lap later to make it a Red Bull 1-2 by lap 15 – with the lead gap already down to 3.7s.
In the battle for best of the rest, Sainz was right on Alonso’s tail when he pitted on 19 – locking up his brakes as he entered the pitlane – and rejoined in heavy traffic. He had to battle past Lewis Hamilton (Mercedes) and Nico Hulkenberg (Haas), but was pinged for speeding in the pitlane anyway, and received a 5s penalty.
Perez was the first Red Bull to pit on lap 21, with a 2.2-second stop that allowed Verstappen to lead. Alonso pitted from second on lap 25, having extended his stint on mediums, rejoining behind Sainz on the road, but running ahead with his penalty taken into account.
Alonso passed Sainz anyway, at Turn 11 just before half…