The Briton's fifth success in 12 races this season, and 58th of his career, came a day after he equalled Michael Schumacher's all-time record of 68 pole positions.
"Sebastian put a great fight on but this is what I said I was coming to do so I did it," Hamilton told the crowd from the podium.
Vettel finished second for Ferrari, 2.3 seconds behind, after pushing his rival all the way without being able to get close enough to make a move stick in what amounted to a two-horse race of relentless pressure.
"It was really intense because every lap I was waiting for Lewis to do a mistake. He didn't," said Vettel, whose next race is Ferrari's home Italian Grand Prix at Monza.
"He was probably waiting for me to make a mistake. I didn't," added the German, who set a race lap record of one minute 46.577 seconds in the closing stages.
With eight races remaining, four-times champion Vettel has 220 points and Hamilton 213.
Australian Daniel Ricciardo took third place for Red Bull after a storming re-start following a late safety car period that had closed the gap to the frontrunners and triggered a flurry of pitstops.
Ricciardo, on fresh ultra-soft tyres, passed Hamilton's team mate Valtteri Bottas to surge into the top three, with the Finn also losing out to the Ferrari of compatriot Kimi Raikkonen as he ran wide.
Germany's Nico Hulkenberg finished sixth for Renault, Romain Grosjean was seventh for Haas and Brazilian Felipe Massa took eighth for Williams.
"It's pretty much for all the Dutch here, so thanks for hanging around," said Ricciardo, whose teenage team mate Max Verstappen retired shaking his head in sheer frustration after eight laps.
It was his sixth retirement in 12 races.
"There are so many fans paying a lot for the tickets and you finish like this. That cannot happen with a top team," said Verstappen, whose orange-clad compatriots accounted for a majority of the crowd.
While Hamilton and Vettel played out their own private duel, there was plenty of action further down the field with the Force India duo of Mexican Sergio Perez and Frenchman Esteban Ocon playing a starring role.
The simmering pair clashed twice, the second time bringing out the safety car when Ocon -- who finished ninth -- tried to get past on the run down to Eau Rouge and was almost squeezed into the wall.
"I can accept the first one -- perhaps he couldn't see me but the second one was ridiculous. He was risking our lives. He risked my life," said a furious Ocon.
Debris from his car's broken front wing littered the track while Perez's right rear tyre was punctured, leaving him limping back to the pits on a rim.
"It looked like Sergio squeezed Esteban into the wall and came out the loser of that scrap," the team's chief operating office Otmar Szafnauer told Sky Sports television, warning that the team would read the riot act.
"Weve let them race up until now. If they can’t do it in a manner which is good for the team, then they won’t be racing anymore," he said.
Spaniard Fernando Alonso was also an unhappy man in the McLaren, the double world champion making a storming start but his Honda-powered car's lack of speed leaving him with an impossible task and increasingly frustrated before retiring.
"Embarrassing, embarrassing," he had said earlier.