McLaren's Lando Norris wins Miami Grand Prix for first-ever F1 win
It was a long overdue triumph for the Briton who held the record for most podiums without a win (15), having finished runner-up an agonising eight times in 110 grand prix.
Verstappen had seemed well placed to claim a fifth win in six races until a midway crash allowed McLaren to cash in on a safety car period, with Norris pitting and coming out with the lead.
Seeking a Miami hat-trick of wins, the Dutchman filled Norris's mirrors on the restart but his Red Bull could offer no challenge as the McLaren pulled clear.
Ferrari's Charles Leclerc completed the podium, coming home third ahead of teammate Carlos Sainz, who was later penalised five seconds for his involvement in a collision with McLaren's Oscar Piastri dropping the Spaniard to fifth.
The penalty moved Verstappen's Red Bull teammate Sergio Perez up one spot to fourth.
"About time! What a race. It's been a long time coming. Finally, I've managed to do it," Norris told Sky Sports.
"I'm so happy for my whole team. I finally delivered for them.
"Long day, tough race. Finally on top, so I'm over the moon. I'm just proud. A lot of people doubted me along the way.
"I've made a lot of mistakes over my last five years in my short career but today we put it all together."
In a season dominated by Red Bull, it was a hugely popular win by the Briton.
Pulling into the pit lane Norris was mobbed by his team, congratulated by the other drivers and cheered by a massive crowd at the Miami International Autodrome that included former US president Donald Trump, who visited the McLaren garage prior to the race.
Until Sunday it had been another dominant weekend for Red Bull as Verstappen topped the timesheets in the only practice session and sprint qualifying on Friday and then won the sprint race and took pole on Saturday.
His second place in the Grand Prix had little impact on the drivers' standings as he continues to hold a commanding 35-point lead over his Perez.
Mercedes' seven-times world champion Lewis Hamilton was sixth and RB's Yuki Tsunoda seventh followed by George Russell in the other Mercedes.
Aston Martin's double world champion Fernando Alonso grabbed ninth while Esteban Ocon earned struggling Alpine their first point of the season crossing 10th.
Starting from pole, Verstappen was in command through the first 20 laps but was unable to open up more than a three-second lead on Piastri.
As the race reached the midway mark Verstappen made a rare unpressured mistake, going wide and hitting a bollard that broke and was left on the track, bringing out the virtual safety car.
Verstappen was then quickly into the pits with Piastri, who had already pitted, assuming the lead.
With the first round of pit stops about to be completed and Verstappen about to retake the lead, McLaren got a lucky break.
Williams' Logan Sargeant spun into the wall, bringing out the safety car and allowing Norris to pit and come out still in the lead, which he never let go.
"You win, you lose," said Verstappen. "I think we’re all used to that in racing, right?
"Today was just a bit tricky. If a bad day is P2, I take it.
"I’m very happy for Lando. It’s been a long time coming and it’s not going to be his last one, so he definitely deserves it today."