Rosberg finished 2.0 seconds behind the Briton, in a dry race despite teams anxiously studying weather maps for approaching rain in the final stages, to complete Mercedes' seventh one-two in 11 races.
"Today was a dream and the car was fantastic all weekend," declared Hamilton, who controlled the race from the opening lap - after an aborted first start - and never looked threatened by his German rival.
"I was never in a position where I felt nervous, I had great pace in the car. There was no real need to push more than I had to," he added.
"I completely messed up the start" says Rosberg
The two collided at Spa last year, with Hamilton having to retire, but the risk of that happening again receded when Rosberg made a slow getaway off the front row.
"I just completely messed up the start," said the German, who had hoped to capitalise on changed starting procedures that leave more to the driver and prevent engineers from helping remotely.
"Lewis did a great job, he deserved to win."
France's Romain Grosjean took an emotional third place for Lotus after Ferrari's Sebastian Vettel, in his 150th race and the team's 900th, suffered a right rear tyre blowout on the penultimate lap.