The Dutchman won from ninth on the grid, after losing out on a shot to set a qualifying time on Saturday after botching his first run, and was denied a further chance by Charles Leclerc's late-session crash.
He was equipped with the hard tyre on a contra-strategy to Perez, who began the race from pole position on the medium compound, and the Mexican made sure to stay ahead of fellow front-row starter Fernando Alonso.
Verstappen initially dropped down to 10th at the start as Valtteri Bottas - starting alongside him on the grid - got a better getaway and leapfrogged the Red Bull and the Alpine of Esteban Ocon.
But the two-time champion settled in, quickly dispatching the brace of cars ahead by the end of the second lap. Further quickfire passes on Leclerc and Kevin Magnussen, who were embroiled in a delectable scrap over sixth place, got Verstappen closer to the front of the field.
A series of fastest laps in the early stages then continued to bring Verstappen back into play, and he got a tow from George Russell with DRS to dive past at Turn 17 on the eighth lap of the race as the Briton complained of vibrations under braking.
Pierre Gasly was next up on the following lap and proved easy pickings at the popular Turn 17 hairpin, moving Verstappen into the top four by the end of lap 10.
It took a comparative age for him to get onto the back of Carlos Sainz, but Verstappen cleared the Spaniard on the 14th lap as Sainz had DRS from Alonso ahead to offer a token defence.
Alonso was also dispatched on the next lap with Perez now 3.6s ahead in the lead, but the Mexican reported that the front right tyre was beginning to give up as the mediums began to chafe in the hot Miami conditions.
Verstappen wound the gap down to 2.2s before Perez came in to trade his aged mediums for a set of hard tyres on lap 20, handing the #1 car the lead, and it became a case of both cars managing their hard tyres.
Perez had the harder job of attempting to close down an 18-second disadvantage to Verstappen, who simply had to maintain the gap prior to his pitstop for medium tyres later in the race.
By lap 32, Perez had the gap down to 14.8s, but Verstappen then began to pick up the pace and managed to ensure the gap could grow once again over the next 13 laps.
Verstappen then eventually called in for medium tyres 12 laps from the end, having extended the gap to 18.3 seconds, but briefly ceded the lead to his team-mate and emerged 1.6s behind once the pitstop was complete.
The pass from Verstappen seemed inevitable, although Perez offered his defence into Turn 17 on the 47th tour of the circuit to keep his team-mate behind. Nonetheless, Verstappen stayed close and blasted past into Turn 1 on the next lap to seal the victory, logging the fastest lap on the penultimate lap.
Perez crossed the line 5.3s behind, while Alonso completed the podium 20.9s behind, feeling he had a 'lonely race' to third.
Russell worked his way through a number of drivers on the opposite strategy and passed both Ferraris to grab fourth, Sainz behind him in fifth having clung onto Alonso earlier on in the race.
Lewis Hamilton put a late move on Leclerc on the 55th lap to rescue sixth from a 13th-placed start, making the opposite strategy work by starting on hards despite getting caught behind Nico Hulkenberg through the first half of the race.
Leclerc meanwhile spent much of the race behind Magnussen and converted seventh on the grid to the same position by the end, ahead of the Alpines of Pierre Gasly and Ocon.
Magnussen completed the top 10, 1.3s clear of a rapidly closing Yuki Tsunoda by the end of the race.
Cla | Driver | Chassis | Engine | Gap | |
---|---|---|---|---|---|
1 | Max Verstappen | Red Bull | Red Bull | ||
2 | Sergio Perez | Red Bull | Red Bull | 5.384 | |
3 | Fernando Alonso | Aston Martin | Mercedes | 26.305 | |
4 | George Russell | Mercedes | Mercedes | 33.229 | |
5 | Carlos Sainz | Ferrari | Ferrari | 42.511 | |
6 | Lewis Hamilton | Mercedes | Mercedes | 51.249 | |
7 | Charles Leclerc | Ferrari | Ferrari | 52.988 | |
8 | Pierre Gasly | Alpine | Renault | 55.670 | |
9 | Esteban Ocon | Alpine | Renault | 58.123 | |
10 | Kevin Magnussen | Haas | Ferrari | 1'02.945 | |
11 | Yuki Tsunoda | AlphaTauri | Red Bull | 1'04.309 | |
12 | Lance Stroll | Aston Martin | Mercedes | 1'04.754 | |
13 | Valtteri Bottas | Alfa Romeo | Ferrari | 1'11.637 | |
14 | Alex Albon | Williams | Mercedes | 1'12.861 | |
15 | Nico Hulkenberg | Haas | Ferrari | 1'14.950 | |
16 | Zhou Guanyu | Alfa Romeo | Ferrari | 1'18.440 | |
17 | Lando Norris | McLaren | Mercedes | 1'27.717 | |
18 | Nyck de Vries | AlphaTauri | Red Bull | 1'28.949 | |
19 | Oscar Piastri | McLaren | Mercedes | ||
20 | Logan Sargeant | Williams | Mercedes | ||
View full results |