The Dutchman, who had started fourth, crossed the line just half a second ahead of Leclerc, who keeps the championship lead, having led a Ferrari one-two in last week’s season-opening Bahrain Grand Prix.
Spaniard Carlos Sainz was third for the Italian team.
“Wow, that was close, wow, unbelievable!” Red Bull boss Christian Horner told Verstappen over the radio.
“Well done, Max great, great job,” he added.
The win was the 21st of Verstappen’s career and handed him his first points of the year after Red Bull’s double retirement in Bahrain.
His teammate Sergio Perez, who finished fourth, was unable to convert his first career pole into victory after the Mexican’s strategy was undone by the safety car.
George Russell took fifth for struggling Mercedes ahead of Alpine’s Esteban Ocon, who edged McLaren’s Lando Norris to sixth by just 0.1 seconds.
Lewis Hamilton, winner of last year’s inaugural Saudi race, recovered to claim the final point in 10th after starting 15th.