Vettel, who started the race from third on the grid, retained his position during the opening laps behind Lewis Hamilton and Leclerc, who held on to the lead from pole position.
The pace at the front of the field was slow during the opening laps as drivers kept their tyres in check, meaning the gaps throughout the field remained relatively short.
However, a gap opened for Vettel to pit to cover Hamilton and following the pit stop of Leclerc, who was serviced on the next lap, Vettel found himself in front of his teammate.
Hamilton then lost his spot on the podium as he stayed out another handful of laps, rejoining the circuit behind the Red Bull of Max Verstappen.
In the final laps of the race, Hamilton closed in on Verstappen for third place, however he couldn't pass the Dutchman, and had to settle for 12 points.
Bottas was fifth for Mercedes and was asked to back off prior to Hamilton's pit stop to allow Hamilton to come out in front of him.
The final safety car was needed after Daniil Kvyat came together with Kimi Raikkonen at Turn 1, putting the Finn out of the race.
Vettel led the way after each of the restarts and wasn't challenged by Leclerc, to take his first race victory since the 2018 Belgian Grand Prix.
Would you like to stay up to date with the latest Lewis Hamilton and Formula 1 news from GPtoday? Activate free push notifications and be the first to know!