Rosberg crossed the line a mammoth 37.7 seconds ahead of German compatriot Sebastian Vettel, who recovered after colliding with his Ferrari team mate Kimi Raikkonen at the first corner, to claim his third win from three races this season.
Daniil Kvyat finished third to score Red Bull their first podium finish since September’s Singapore Grand Prix but the Russian had to defend himself after the race when an angry Vettel blamed him for the collision between the Ferraris.
Sunday’s win was the 17th of Rosberg’s career and extends his streak of race victories to six, dating back to last November’s Mexican Grand Prix.
The German now leads Hamilton at the top of the standings by 36 points with 18 rounds of a record 21-race season to run.
Hamilton, who had started from dead last after failing to set a time in Saturday’s qualifying session due to an engine problem, finished seventh, running into further trouble at the start when he lost his front wing in a first-corner collision.
The Briton used some good-old fashioned racing nous and clever strategy from Mercedes to work his way up to third, but his challenge faded in the later stages of the race.
Red Bull’s Daniel Ricciardo finished fourth. The Australian rocketed off the line from second on the grid and shot past Rosberg into an early lead, but was pushed onto the back foot after being forced into an early stop by a tyre failure.
Raikkonen, who came off worse in the first-corner collision with team mate Vettel, was sixth ahead of Felipe Massa of Williams.
Max Verstappen was eighth ahead of Toro Rosso team mate Carlos Sainz, while Valtteri Bottas rounded out the top ten for Williams.
The race was interrupted by an early safety car after a series of incidents at the very first corner left debris across the track.
The safety car led to a chopping and changing of the order with some drivers choosing to pit even as others stayed out, putting a mix of tyre strategies into play.