However, Vettel lacked pace and was instructed by his team to let Leclerc back through for the lead, as he lost the top spot following a five-lap undercut for Vettel.
As he made his way through Eau Rouge, his car was too damaged, and he ended up in the wall and out of the race. Vettel found himself behind Hamilton before getting past again at Turn 4.
A safety car was then deployed to allow the marshalls to clear away Verstappen's car, while Carlos Sainz also had issues with his clutch, putting him into retirement.
Valtteri Bottas picked up the final spot on the podium, taking his tenth top-three finish of the season. Vettel in fourth was the only driver inside the top four to make a second stop, as he fitted the soft compound before Bottas had an opportunity to overtake.
However, both were promoted up one position before that, as Lando Norris, who was running clear in fifth place, pulled to the side of the circuit with a power unit problem.
Antonio Giovinazzi was on course to score points before he collided with the barriers at Pouhon on the last lap, bringing out yellow flags in the second sector.
At this point, Hamilton was closing in fast on Leclerc, who was struggling with is tyres, however the Monegasque driver held on to take home 25 points.
Daniel Ricciardo was running inside the points after pitting on the opening lap, as he too got caught up in the contact at Turn 1.
Bahrain International Circuit - Winter testing