Vettel led off the line from pole and controlled the first half of the race, but Hamilton managed to close the gap from lap 40 to begin challenging for the lead, with only Ferrari’s prodigious straight-line speed keeping him just out of striking distance.
The Briton continued to apply heavy pressure until his siege yielded a weakness on lap 48, when Vettel suffered a snap of oversteer into turn four that sent him across the grass.
But the Ferrari clambered back onto the racing line just as the Mercedes was cruising past. Hamilton was forced to back off to avoid being sandwiched against the wall, and he radioed his team to express his unhappiness with the defence.
Mercedes relayed the complaint to the stewards, who picked up the investigation and slapped Vettel with a five-second penalty, allowing Hamilton to take the chequered flag 1.3 seconds behind his rival to claim victory.
Vettel was inconsolable after the race, venting to his team that a hard-earnt race win had been stolen from him by the grand prix officials.
“No, no, no. Not like that,” he said. “You need to be an absolute blind man to think you can go through the grass and control your car.
“It was lucky that I didn’t hit the wall. Where the hell am I supposed to go?
“This is a wrong world. This is not fair.”
The German stormed off to the Ferrari rooms immediately after getting out of the car, and it was only on the advice of an FIA official that he was coaxed out to stand on the podium — albeit with a detour to switch the first-place sign standing at the front of Hamilton’s car with one bearing the number two.
“It’s not making our sport popular, is it, with these kinds of decisions?” he later told British TV. “People want to see us race, and that was, I think, racing.
“I hope the people come back, that’s the main thing obviously. They are the reason why we are able to put this show on and build these incredible cars.
“It’s just a shame when we have all these little funny decisions.”
Lewis Hamilton was subdued in victory, but he emphasised that he had forced Vettel into an error and deserved the chance to capitalise.
“Naturally this is absolutely not the way I wanted to win,” he said. “I was pushing to the end to try to get past. I pushed him into an error, he ran wide … and we nearly collided.
“I took the corner normally, but when you come back onto the track you’re not supposed to go back onto the racing line — you’re supposed to come back safely.”
Charles Leclerc completed the podium, finishing just six seconds behind Vettel to almost snatch an additional place from his beleaguered teammate.
“I’m pretty happy about my own performance today,” he said. “I think we were very quick.
“I’m very disappointed for the team. We’ve all worked extremely hard to be there. I’m not sure what happened, but the team definitely deserved a victory today.”
The result propelled Hamilton to a 29-point championship lead over teammate Valtteri Bottas, who finished an ineffectual fourth after falling to seventh at the start, and a 62-point lead over Vettel. Mercedes leads Ferrari by 123 points.
Max Verstappen recovered from a Q2 knockout on Saturday to finish fifth with a contrastrategy, starting on the hard tyre and running until lap 48 before making his first pit stop. With fresh mediums equipped he made short work of Renault teammates Daniel Ricciardo and Nico Hulkenberg, who finished sixth and seventh.
Pierre Gasly finished a disappointing eighth and a lap down despite qualifying fifth. His race was undone when he failed to pass Racing Point’s Lance Stroll after his first pit stop while locked in a battle with Ricciardo. The Australian managed to get away, but the Frenchman was left to struggle behind the Canadian until lap 44.
Stroll fell to tenth after his stop, but a gutsy move on lap 66 propelled him past Carlos Sainz to recover ninth place, with Daniil Kvyat following suite with a move on the Spaniard to claim the final point of the race.