The Mercedes driver fought a cat-and-mouse battle with Vettel's team-mate Kimi Raikkonen throughout the race and eventually passed him around the outside of the first corner with nine laps to go.
Hamilton and Mercedes not only dashed Ferrari's hopes of a home win after their first front-row lock-out at Monza for 18 years but also extended the Briton's championship lead over Vettel, who finished fourth, to 30 points.
That is more than a clear win, with seven races and a total of 175 points remaining in the season.
It could not have come at a better time for Hamilton, who is facing a fight against an apparently faster car - at least in qualifying - and with Mercedes' bogey track, Singapore, next on the schedule.
Hamilton v Vettel
Ferrari's race began to unravel within four corners of the start, as Vettel spun trying to defend against an overtaking move by Hamilton at the second chicane on the first lap.
Hamilton took the outside line and was slightly ahead as they turned into the corner, after the German had had a little look at a possible passing move on Raikkonen in the lead.
Vettel's car slid into Hamilton's in the middle of the chicane and he spun in front of the pack, his front wing broken.
The Ferrari driver complained over the radio, but the stewards judged it a racing incident not worthy of further action.
Vettel was left to recover lost ground and eventually took fourth - partly thanks to a five-second penalty for Red Bull's Max Verstappen, who finished third on track but was demoted to fifth after crowding Hamilton's team-mate Valtteri Bottas off the track.
Hamilton said: "I want to give it up to Ferrari, who put up a great challenge this weekend. There was a lot of negativity here and I could see so many British flags out there, and they inspired me so much.
"In future, the negative is only a positive for me, because I turn it around.
"Big thank you for the team and also for Valtteri for helping me."
Hamilton v Raikkonen
The first-lap incident left the race as a battle between Raikkonen and Hamilton, and they fought tooth and nail throughout.
Hamilton briefly took the lead at the restart after the safety car was introduced following the first-lap collision between the title contenders, and a retirement for Toro Rosso's Brendon Hartley following a collision at the start, but was immediately re-passed by Raikkonen.
Mercedes than had to bring strategy into play.
Once back into the lead, Raikkonen could not shake off Hamilton, the Mercedes following about a second behind throughout their first stint.
Ferrari's concern was not to be beaten to a pit stop by Hamilton, as the Mercedes would then probably jump ahead.
So they made sure to stop Raikkonen early, bringing him in on lap 20, with 33 to go.
Mercedes chose to leave Hamilton out, to give him an advantage on tyre life and speed later in the race, and also decided to bring Bottas into the race.
Hamilton ran until lap 28 before his pit stop, doing an excellent job in minimising the amount Raikkonen gained on him on fresh tyres.
By the time Hamilton pitted, Raikkonen had caught Bottas and the Finn was used to hold his countryman back and give Hamilton a chance to catch up.
Bottas eventually pitted on lap 36, leaving Raikkonen and Hamilton nose to tail. But overtaking is difficult at Monza, despite the long straights, and although Hamilton followed closely he struggled to get past.
As the laps ticked by, though, Raikkonen's older tyres began to give up, enabling Hamilton to get closer and closer, until on lap 45 the Mercedes went for the outside of the first chicane and pulled off another excellent pass.
Mercedes were thrilled. "You are the man, you are the man," Hamilton's engineer Peter Bonnington said over the radio after the victory. "You knocked that out of the park today."
SHARE THIS STORY USING ANY OF THE BUTTON BELOW ⬇ PLACE YOUR TEXT ADVERT BELOW ⬇⬇⬇