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.
Grosjean to test Hamilton's 2019 Mercedes at French GP circuit
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.
"It was probably one of my best races ever," said the Frenchman, back on the podium for the first time since 2013 in a boost for a financially-troubled team who arrived in Spa with the threat of having their cars impounded hanging over them.
"Being here today is special for us, it has the price of a race win."
Hamilton has now won six races this season, and 39 in his Formula One career.
The double champion has 227 points to Rosberg's 199 and Sunday was also his 80th podium appearance, equalling the achievement of boyhood hero and late triple world champion Ayrton Senna.
Russian Daniil Kvyat finished fourth for Red Bull after a late charge through the field with Mexican Sergio Perez, who had stormed into second place at the start, finishing fifth for Force India.
Brazilian Felipe Massa was sixth for Williams, with Ferrari's Kimi Raikkonen seventh after starting in 16th place, and 17-year-old Belgian-born Dutchman Max Verstappen eighth for Toro Rosso.
Finland's Valtteri Bottas was ninth for Williams, after an embarrassing team error that saw him leave the pits with three soft tyres and one medium fitted, and Sweden's Marcus Ericsson took the final point for Sauber.
Germany's Nico Hulkenberg caused the aborted start, and reduction of the race to 43 laps instead of 44, when he reported a loss of power and raised his hands. The German returned to the Force India garage and retired.
The McLaren pair of Fernando Alonso and Jenson Button, who started last after picking up a meaningless combined grid drop of 105 places -- despite there being only 20 in total -- finished 13th and 14th.
Portuguese Grand Prix
Race review: Hamilton and Mercedes flex mental muscles, Alonso shows promise
Portuguese Grand Prix
Hamilton fends off Red Bull challenge to win Portuguese GP