Hamilton fell to sixth by Turn 1, but clawed his way back up the order to finish 15 seconds adrift of Rosberg. Kimi Raikkonen, meanwhile, followed Ferrari team mate Vettel home in fourth, ahead of the Red Bull of Daniel Ricciardo.
Valtteri Bottas was Williams’ lead runner in sixth, split from team mate Felipe Massa by the Red Bull of Max Verstappen and the Force India of Sergio Perez, whose team mate Nico Hulkenberg completed the top ten.
Rosberg, second on the grid, was in control from the moment that polesitter Hamilton got so much wheelspin off the line - a driver error - that he had lost five places by the first corner.
Thereafter Rosberg drove with the same precision he demonstrated last week in Belgium and was able to ease away on his soft Pirelli tyres as the supersoft-shod Ferraris of Vettel and Raikkonen led Bottas and Ricciardo at the end of the lap. As Rosberg punched in quick laps, making as much hay as he could while the Italian sun shone on him, Hamilton took only a lap to dispose of Ricciardo, but another 10 before Bottas finally succumbed as his Williams’ supersofts began to lose their edge.
Mercedes’ strategy of single-stopping both cars - starting them on softs and finishing on mediums - eventually paid out handsomely. Ferrari went for two-stoppers, running supersoft-supersoft-soft, and though Vettel was catching up bit by bit at the end, it was never going to be enough to dislodge Hamilton as the Englishman trailed home second, 15s down on his team mate.
Rosberg’s seventh win of the year was perhaps his easiest since Baku, and brings him within two points of Hamilton, 250 to 248.
Raikkonen set a couple of fastest laps but never looked like doing better than fourth behind his team mate, but the red cars were well ahead of Ricciardo who battled hard with Bottas and used better tyre strategy to deprive the Finn of fifth place six laps from home.
Like Hamilton, Verstappen paid a high price for a poor start which saw him slump to 11th. He too spent the rest of the afternoon trying to recover, but had to settle for seventh after catching and passing Perez.
Mercedes remain well ahead in the constructor’s stakes with 488 points, but Ferrari have edged closer to Red Bull with 279 to their 290. Williams move back to fourth on 111, with Force India on 108.
Amongst the close-but-clean racing, incidents were few, though Renault’s Jolyon Palmer and Sauber’s Felipe Nasr tangled at Turn 2 on the second lap; both failed to finish and Nasr was given a 10s penalty for causing their collision.
Of those who did get to the end, Jenson Button battled with and beat McLaren team mate Fernando Alonso and was only half a second behind the one-stopping, 11th placed Haas of Romain Grosjean by the flag. Esteban Gutierrez, another to make a terrible start, was 13th in the second Haas as a late stop for supersofts took Alonso to 14th and the fastest lap of the race.
Toro Rosso’s Carlos Sainz led Sauber’s Marcus Ericsson and Renault’s Kevin Magnussen home, as Pascal Wehrlein joined Palmer and Nasr in retirement when told to switch off his Manor’s Mercedes power unit. Daniil Kvyat was the other non-finisher, the Russian pulling his Toro Rosso into the pits to retire after 36 laps.