McLaren's British driver Lando Norris wins Miami Grand Prix
Norris, in his 110th race for McLaren, beat Verstappen by over seven seconds with Ferrari's Charles Leclerc finishing third.
Verstappen, who began on pole, had won four of the opening five races of the season and leads the world championship standings.
It looked like business as usual with the Dutchman leading until lap 24 when he pitted and Norris's McLaren teammate Oscar Piastri took over the lead.
Australian Piastri himself went into the pits four laps later, allowing Norris to grab the lead and the British driver never looked back.
Crucially, Norris was able to pit during a safety car on lap 30, earning him a valuable time advantage which he never relinquished.
The safety car came after Kevin Magnussen clipped Logan Sargeant, sending the American Williams driver into the wall, bringing a yellow flag.
Norris took full advantage of the safety car and with Verstappen struggling to catch up, he secured his maiden win.
Norris was hoisted in the air by the McLaren mechanics as his long wait for a victory in the sport came to an end.
"About time huh?" said Norris, "I knew on Friday that we had the pace...today we managed to put it together. We had the perfect strategy, it all paid off," he added.
"I guess a lot of people doubted me along the way. I've made a lot of mistakes over the last five years, my short career, but today we pulled it all together, so this is all for the team.
"I stuck with McLaren because I could believe in them and I did believe in them and today proved exactly that," he added.
Verstappen said his Red Bull had been unable to keep up with Norris once the McLaren driver switched to hard tyres.
"They just had more pace, Lando was flying. It was incredibly difficult for us, but on the bad days P2, I'll take it right?
"I'm very happy for Lando, its been a long time coming and it's not going to be his last one. He definitely deserves it," said the Dutchman.