Mexican driver Sergio Perez denied Alonso second place, overtaking the Spaniard seven laps from the finish in his Ferrari-powered Sauber in Ferrari's backyard.
Hamilton's third win of the season, and 20th of his career, lifted the 2008 champion to second in the overall standings with seven races remaining. Alonso has 179 points, Hamilton 142 and Lotus's Kimi Raikkonen 141.
"It's been fantastic to win here. I'm just so happy for my team, it's been a fantastic day," said Hamilton, who had added the Italian flag colours to his helmet for a race at one of Formula One's most historic and evocative circuits.
"Fernando is a two-time world champion so I'm very happy for him too," he said of his former McLaren team mate after McLaren's third win in a row.
In Image: McLaren Mercedes driver Lewis Hamilton of Britain, center, winner, Sauber driver Sergio Perez of Mexico, second placed, left, and Ferrari driver Fernando Alonso of Spain, third, pose on the podium of the Italian Formula One GP