Hamilton did just what he needed to in his 200th Grand Prix as he scored his 58th career success, but it was an intense nip-and-tuck battle all the way, with Vettel never more than two seconds adrift throughout the 44 laps, and sometimes a lot closer than that.
Kimi Raikkonen was fourth in the second Ferrari, the Finn having been given a 10-second stop-go penalty for ignoring yellow flags when the luckless Max Verstappen retired his Red Bull with power loss on Lap 8.
Valtteri Bottas finished a disappointed fifth for Mercedes, while Nico Hulkenberg scored his third sixth place of the year for Renault, followed home by the Haas of Romain Grosjean and the Williams of Felipe Massa.
Esteban Ocon survived contact with Force India team mate Sergio Perez not once but twice in two separate clashes on the run down to Eau Rouge to take the flag in ninth, with Toro Rosso’s Carlos Sainz completing the top ten.
Hamilton took charge from the start as Vettel pushed in his wake ahead of Bottas, Raikkonen, Verstappen and Ricciardo. But much to his 40,000 Dutch fans’ dismay the luckless Verstappen lasted only seven laps before coasting to a halt partway up the Kemmel straight with power loss.
Hamilton retained control until another incident between Force India drivers Ocon and Perez, who had already rubbed wheels (and in Ocon’s case the wall) going down the hill to Eau Rouge on the opening lap, brought out the safety car on the 30th lap.
This time Perez had again squeezed his team mate towards the old pit wall, and they made firmer contact. Perez sustained a punctured right-rear tyre, while Ocon lost a chunk of his front wing. There was debris everywhere, hence the safety car.
Where all but supersoft runners Grosjean and Sainz went for ultrasoft tyres in the ensuing rash of pit stops, Mercedes put their drivers on softs, and it seemed that they might have thrown away the race.
Bottas got things wrong at the restart on the 34th lap and was passed on the left on the run to Les Combes by the ever-opportunistic Ricciardo and on the right by Raikkonen.
As one Mercedes fell back, however, the other forged ahead again, and against expectations Hamilton was able to contain Vettel’s challenge, even though the Ferrari was on the theoretically faster rubber.
The result brings him within seven points of the German, 213 to 220, with Bottas third on 179, Ricciardo on 132, and Raikkonen on 128.
Behind them, Hulkenberg easily took sixth, but a mid-race change of strategy helped Grosjean to take seventh for Haas ahead of Massa, whose Williams fended off Ocon’s damaged Force India to the flag. Sainz salvaged 10th and a point for Toro Rosso, as Williams’ Lance Stroll led Toro Rosso’s Daniil Kvyat, Renault’s Jolyon Palmer, McLaren’s Stoffel Vandoorne and Sauber’s Marcus Ericsson home.
Perez’s car was withdrawn late in the race, joining McLaren’s Fernando Alonso, Verstappen and Sauber’s Pascal Wehrlein on the retirements list.
WATCH: Race highlights from Belgium
Unfortunately, we are unable to play the video at this time.
Error Code: UNKNOWN