Rosberg's delight was reduced by his Mercedes team-mate Hamilton's damage-limiting and thrilling drive to finish on the podium after starting from the back row of the grid.
Australian Daniel Ricciardo finished second in his Red Bull.
The 31-year-old Rosberg, who started from his third successive pole position, led from start to finish in a 44-laps race fractured by accidents and incidents to secure his first victory in Belgium and his sixth of the season.
German Nico Hulkenberg finished fourth ahead of his Force India team-mate Sergio Perez, as the Silverstone-based team overhauled rivals Williams in the constructors' championship.
More From This Section
Four-time world champion Sebastian Vettel of Ferrari recovered from a first-corner collision with his own team-mate Kimi Raikkonen to take sixth ahead of Fernando Alonso, who had started 22nd on the grid.
Valtteri Bottas was eighth for Williams ahead of Raikkonen and Brazilian Felipe Massa.