The German was chased home by teammate Charles Leclerc, who started on pole but lost the lead to the four-time world champion after making his pit stop, and Red Bull’s Max Verstappen, who finished third.
“It was a very late call on the pit stop and I just gave it everything on the out lap. I was surprised to come out ahead and it was difficult to manage the tyres but we controlled it to the end,” Vettel said.
Championship leader Lewis Hamilton finished fourth but extended his advantage over fellow Mercedes driver Valtteri Bottas to 65 points, with six races remaining, after the Finn finished fifth.
The race got off to a clean start with the top six retaining their grid positions despite Vettel putting immense pressure on second-placed Hamilton in the opening lap.
While a few drivers were shifting position further down the field, the frontrunners were maintaining a one-second gap between each other as Leclerc set a slow pace to make his soft tyres last as long as possible.