Rosberg kept Hamilton honest throughout, but the world champion was never headed as he took his second victory of the season and his fourth in Shanghai. Sebastian Vettel won a tight intra-team battle at Ferrari, beating team mate Kimi Raikkonen to third place.
The race finished under the safety car, which was deployed on lap 54 of 56 when Max Verstappen's Toro Rosso came to a smoky halt on the pit straight with a suspected power unit failure. The Dutch rookie had driven another great race and was running a very strong eighth prior to his retirement.
Even without that intervention, Hamilton had demonstrated that he was in full control of the race by opening up a healthy 10-second lead over Rosberg.
Vettel, however, did have reasons to be grateful for the late cessation of racing, as team mate Raikkonen had been closing rapidly. On fresher rubber, the Finn had slashed the gap to Vettel to just 1.3s, only for his pursuit to be thwarted with two laps to run.
The Williams duo of Felipe Massa and Valtteri Bottas had no challenge to offer the red cars but took fifth and sixth, as Romain Grosjean secured seventh to give Lotus their first points of 2015.
With Verstappen's late retirement, Felipe Nasr was promoted to eighth for Sauber, getting back into the points after his differential problems in Malaysia.
Team mate Marcus Ericsson also scored for Sauber as he took the final point in 10th, right behind Red Bull's Daniel Ricciardo. The Australian made a horrendous start to drop to almost last by Turn 1, but dug out a gritty performance to work his way back through the field.
Behind Force India's Sergio Perez in 11th, Fernando Alonso got the better of McLaren team mate Jenson Button, but only after late drama.
Button had been enjoying a brilliant scrap with Pastor Maldonado, but ran into the back of the Lotus driver under braking for the first corner on lap 49. Maldonado was pitched into a spin and ultimately forced to retire, an unfortunate end to an already scrappy race which included a self-inflicted spin and running too deep as he came in for his second pit stop on the 33rd lap, at which point he was in contention for seventh.
The stewards subsequently added five seconds to Button’s race time after he accepted blame for the coming together with the Venezuelan. That dropped the Briton, who was also handed two penalty points, from 13th to 14th in the final standings, behind Alonso - who passed him on the road - and Toro Rosso’s Carlos Sainz.
For Sainz it was a particularly disappointing afternoon, with a spin at Turn 1 on the second lap compounded by gearbox trouble which further slowed his progress. Both Marussias finished the race two laps down, with Will Stevens 15th and Robert Merhi 16th. Merhi also found himself in trouble with the stewards, who docked him two points on his license and gave him a five-second time penalty for failing to stay above the required time during the late safety car period.
The result extends Hamilton's championship lead, and he now has 68 points to Vettel's 55 and Rosberg's 51.
Mercedes meanwhile lead the constructors with 119 points to Ferrari's 79 and Williams' 48.