Verstappen expertly managed a restart after a safety-car period with 11 laps to go to bolt into a decisive lead while McLaren’s Lando Norris and Oscar Piastri fought with the Mercedes of George Russell and Lewis Hamilton behind him.
Verstappen pulled out nearly two seconds in one lap and controlled the race to the end from there.
Norris had twice led the race earlier on as conditions fluctuated between wet and dry but lost it each time by stopping later than Verstappen.
And in the closing laps he could not do anything about the world champion when it mattered and had to settle for second.
Russell, who had led the early laps before the race’s various dramas began to unfold, passed Hamilton with three laps to go to take the final podium place but was left ruing a couple of key errors during a race that he started from his first pole position for nearly two years.
Hamilton took fourth place ahead of Piastri with the Aston Martin of Fernando Alonso sixth.
It was Verstappen’s sixth win in nine races this year, and extended his championship lead over Ferrari’s Charles Leclerc to 56 points after a terrible race and double retirement for the Italian team.
Although Verstappen won again, it was far from the foregone conclusion of grands prix at the start of the season.
The last 11 laps started finely poised, after Mercedes pitted Russell and Hamilton for fresh tyres under the safety car, giving both drivers a 10-lap advantage on their tyre wear over Verstappen and the McLarens in front.
But just as Russell was beginning to mount a challenge on the McLarens, with Norris and Piastri running nose to tail behind the escaping Verstappen, the Mercedes driver was a touch ambitious in trying to pass Piastri on the outside of the final chicane and was forced on to the run-off area.