The Red Bull driver claimed the lead at the start of the race, passing his pole-sitting team mate Daniel Ricciardo and resisting Hamilton, who made a quick start from third on the grid.
Hamilton faded rapidly during the race which allowed Verstappen to build a healthy lead. Both Mercedes drivers suffered high tyre degradation and fell behind the Red Bulls and Ferraris.
Sebastian Vettel emerged on the tail of Ricciardo’s second-placed car. But with eight laps to go Ricciardo suffered yet another power unit failure, which forced him out and let Vettel by.
Ricciardo’s demise promoted Kimi Raikkonen to the final place on the podium. Hamilton, fourth, was the last driver on the lead lap. Team mate Valtteri Bottas used the Virtual Safety Car period which was triggered by Ricciardo to make a third pit stop, and ended the race on hyper-softs having used one of each type of tyre compound.
Nico Hulkenberg led the midfielders home in sixth place, two laps adrift, followed by Charles Leclerc. Stoffel Vandoorne scored his first points finish since the Azerbaijan Grand Prix in eighth, ahead of Marcus Ericsson and Pierre Gasly.
Fernando Alonso, Carlos Sainz Jnr and Sergio Perez joined Ricciardo in retirement.