Triple world champion Hamilton, who had been on pole position as favourite to take his 50th career victory and third in a row at Monza, finished second after a slow start gifted Rosberg the race.
Rosberg’s first victory at the historic circuit outside Milan was his seventh of the season, one more than Hamilton, and 21st of his career as well as second in a row after Belgium last weekend.
“I’m feeling great, the race is on with Lewis. It is always going to be a great battle and I look forward to what is to come,” he said from the podium as an army of Ferrari fans flooded the pit straight.
The German also broke into Italian before attempting to win over the crowd with a rousing sing-along.
Ferrari’s Sebastian Vettel, who mistakenly put on the winner’s cap before the podium and handed it on to Rosberg, finished third to a much bigger roar from the fans yearning for a first Ferrari victory of the season at their home race. Finnish team mate Kimi Raikkonen was fourth, with Australian Daniel Ricciardo fifth for Red Bull.
Hamilton now has 250 points, Rosberg 248 with Singapore’s night race the next destination.
“I don’t know really what happened at the start... I did everything normal,” said Hamilton.
With the race effectively won and lost in the opening seconds, with Hamilton dropping to sixth place at the end of the first lap and then climbing back with pitstop strategy and just two simple overtakes, Rosberg had an untroubled run to victory.
The German took the chequered flag 15 seconds clear of Hamilton, with both Mercedes drivers on the same one-stop strategy, compared to the two made by Ferrari.
“Lewis had too much wheelspin at the start and this cost him the victory,” said Mercedes motorsport head Toto Wolff. “From then on, it was basically over.”
Hamilton passed Ricciardo with a sleek move on lap two, but he struggled to make his way past Bottas.
By the time Hamilton eventually took the Finn on lap 11 he was 11 seconds behind his Mercedes team-mate.
And by the time he leapfrogged Sebastian Vettel and Kimi Raikkonen, courtesy of stopping for tyres on one less occasion than the Ferrari pair, the gap stood at 15 seconds. “Nico drove a great race — he was faultless,” admitted Hamilton.
Valtteri Bottas’s sixth place allowed Williams to leapfrog Force India in the constructors’ championship and retake fourth place.
Dutch teenager Max Verstappen was seventh for Red Bull, ahead of Mexican Sergio Perez for Force India and Williams’ Brazilian Felipe Massa. German driver Nico Hulkenberg took the final point for Force India in 10th.