The German started from pole but was forced to switch to a one-stop strategy late in the race, requiring him to preserve his tyres against Bottas’s fresher rubber.
But Vettel, racing in his 200th grand prix, used every ounce of his experience to fend off the quick-finishing Finn.
“I tell you, these tyres were done!” Vettel shouted over team radio on the cool-down lap. “They were done for the last 10 laps!
“Grazie, ragazzi, mamma mia!”
The strategic showdown between Ferrari and Mercedes was foreshadowed on Saturday (Apr 7), but Red Bull Racing was expected to figure strongly in race permutations; however, both Daniel Ricciardo and Max Verstappen were eliminated from the race in the opening laps.
Ricciardo’s car switched itself off on lap two with an electrical issue, whereas Verstappen picked up a puncture in a tangle with Hamilton on the opening lap.
Though the Dutchman limped back to the pits for a tyre change, he sustained too much damage to his car in the process, and his team ordered his retirement on lap five.
Hamilton had lost a place to Fernando Alonso at the start, but a skirmish with the Spaniard and Nico Hulkenberg and Esteban Ocon on lap four put the Briton up to sixth, and decisive passes on Magnussen and Gasly on laps five and eight put the reigning world champion into fourth place.
At this stage the Briton was in the fight for victory with a potential tyre advantage, having started the race on the more enduring soft compound compared the supersoft used by the Vettel, Bottas and Kimi Raikkonen ahead.
Ferrari committed race leader Vettel and third-paced Raikkonen to two-stop races by pitting them for the soft-compound tyres on laps 18 and 19 respectively, prompting Mercedes to opt for the alternative one-stop strategy.
Bottas was the first silver car to pit, switching straight to the medium-compound tyre on lap 20.
The Ferrari drivers were required to push for the rest of the race to counter Mercedes’s long-game approach, and Vettel duly obliged. By lap 27 he had re-passed Hamilton, who had inherited the lead, which prompted the Briton to make his sole pit stop for the medium compound.
The order resumed, with Vettel leading from Bottas, Raikkonen and Hamilton, and with 24 seconds required to make a pit stop, Mercedes ensured Lewis kept himself within 20 seconds of Sebastian at the head of the field.
The tension between the two opposing strategies escalated through to lap 35, when Ferrari blinked and stopped Raikkonen in an attempted to force Bottas to follow him, but the ploy backfired when the Finn left his pit box before his stop was completed, hitting a mechanic in the process.
Ferrari was forced to retire the car, losing a key strategic tool in the process.
Vettel was told he was being moved to strategy B, which meant he wouldn’t be stopping again. The German switched to conservation mode to eke out the maximum life from his soft compound tyres.
Bottas seized his moment to strike. He began reeling in the scarlet car, and as Vettel’s tyres began to expire in the final 10 laps, the Mercedes’s rate of progress increased to a second a lap.
With five laps remaining little more than two seconds separated the race protagonists, and on the penultimate lap Bottas got within DRS range, closing in close enough to have a look down the inside at turn one.
Vettel, however, deftly fended off his advances, saving his battery power for deployment at key traction moments to counteract Bottas’s superior grip.
The German led the Finn over the line by just 0.699 seconds.
“I think I came on the radio with 10 laps to go and said, ‘I have everything under control’,” he said. “But that was a lie, I admit! Nothing was under control!
“I was making the maths inside the car – ’10 laps to go with that pace; he’s going to catch me!’
“He had a bit of a sniff, but fortunately he ran out of laps.
“That I managed to get the win under these conditions, it tastes even better, so I’m very happy.”
Bottas was disappointed to let victory elude him, but it was nonetheless an important result for the Finn after a messy first round in Melbourne to open the final season on his current Mercedes contract.
“I was trying to get every lap perfect trying to catch him, but it wasn’t quite enough,” Bottas said.
“Being second with such a close margin and with such big pace in the end is for sure disappointing, but we’ll try to get the, next time.”
Hamilton finished a frustrated third, his race troubled by radio issues that he felt prevented him from running his optimum race, though he acknowledged a podium finish was a good result give his grid position.
“I started ninth, so third is not so bad at all. It’s damage limitation,” he said.
Pierre Gasly finished a superb fourth after starting a similarly impressive fifth on the grid for Toro Rosso-Honda.
The Frenchman was perhaps the driver of the day, executing a mature performance that belied his seven-race Formula One career.
Moreover, it was Honda’s best result since its return to the sport as an engine manufacturer with McLaren in 2015.
Kevin Magnussen finished fifth for Haas, making good on the team’s promising form in Australia, where it failed to score points after two crucial pit-stop errors.
Renault’s Nico Hulkenberg spent the race keeping a ferocious Fernando Alonso at bay, the Spaniard nonetheless salvaging points for McLaren after a hitherto disappointing weekend.
Alonso’s teammate, Stoffel Vandoorne, finished 10 seconds adrift from the lead McLaren.
Marcus Ericsson pulled off a strong one-stop race to finish ninth, scoring two points for Sauber – the team’s first since last year’s Azerbaijan Grand Prix and Swede’s first points since 2015.
Esteban Ocon rounded out the top 10, scoring Force India’s first point of the season.