Button, who led for more than half the race by little more than a second, finished runner-up after losing out at his pitstop after 36 of the 53 laps.
With Button's team mate Hamilton going out on the first lap, Red Bull's Webber surged five points clear despite finishing only sixth.
The top five are now separated by just 24 points, less than the 25 available for a victory, with everything to play for and five races remaining.
Webber has 187, Hamilton 182, Alonso 166, Button 165 and Red Bull's Sebastian Vettel 163.
Button denied Ferrari a one-two finish, with Brazilian Felipe Massa joining team mate Alonso on the podium in third as a sea of red-shirted fans invaded the track in jubilation.
"This is a good motivation for all of us but the remaining five races are the really important ones," said Alonso, who started on pole position and had earlier described Monza as crucial to his hopes of a third title after he crashed in Belgium last month.
"We need to remain calm. This was a good weekend for us. Spa was a bad weekend. We need to find some consistency in the final races."
Massa had challenged Alonso at the start, a seemingly futile gesture for a driver ordered to let the Spaniard win in Germany, but his main contribution was to knock Hamilton out of the running at the Della Roggia chicane on the opening lap.
The two banged wheels in a risky bid by the 2008 champion for third place and Hamilton's front right suspension was broken by the impact.
Hamilton's retirement was his second in three races, although he won the previous race in Belgium, and his second in succession in Italy.
"The championship is not over but it's mistakes like I made today that lose world championships," the Briton told reporters. "It's my fault, I'll take the blame."
Vettel was fourth, leaving his pitstop to the last lap after earlier suffering an engine problem and slipping behind Webber.Carvalho hands Mourinho winning home start
He cut his deficit to Webber from 28 to 24 points, with his result demonstrating that Red Bull were in no mind for the 'team orders' that led to Ferrari being hauled before the governing body last week.
Germany's Nico Rosberg was fifth for Mercedes with compatriot Nico Hulkenberg seventh for Williams.
Poland's Robert Kubica was eighth for Renault with Schumacher ninth in a Mercedes and Brazilian Rubens Barrichello, last year's winner for Brawn GP, taking the final point for Williams.