After leading early on before suffering a puncture, Daniel Ricciardo came through to consolidate a good day for Red Bull with fourth, followed by the second Ferrari of Kimi Raikkonen and Williams’ Felipe Massa.
Lewis Hamilton, who started last for Mercedes after his qualifying woes, came through a battling afternoon which featured five pit stops to finish seventh, just ahead of the Toro Rossos of Max Verstappen and Carlos Sainz. Williams' Valtteri Bottas rounded out the top ten, with all 22 cars completing the race.
It was Red Bull who led into Turn 1 at the start, Ricciardo getting the jump on polesitter Rosberg from P2 on the grid. On row two, however, the Ferraris made relatively poor getaways - which would lead to trouble through the opening turns.
Kvyat sparked it, scything decisively down the inside of Vettel at Turn 2. Surprised, the German jinked to the left, and into the path of Raikkonen - the pair made contact, pitching Raikkonen into a half spin and forcing him to pit with damage. Vettel, meanwhile, lost ground and dropped to eighth.
There were further consequences. Hamilton lost his front wing after contact with Felipe Nasr as the Sauber driver tried to avoid the melee, while Romain Grosjean damaged his Haas’s nose on the sister Sauber of Marcus Ericsson.
Further drama followed when Ricciardo's tyre deflated on lap three, forcing him to pit and consigning the Australian - like Hamilton and Raikkonen - to fighting back for the rest of the race.
The track now littered with debris, the safety car was deployed, prompting the bulk of the field to pit for fresh rubber. When the race resumed on lap eight, Rosberg headed an otherwise unlikely lead pack that featured Williams’ Felipe Massa, McLaren’s Fernando Alonso and Manor’s Pascal Wehrlein, none of whom had stopped.
Rosberg was rarely troubled thereafter, but behind him the action continued at a breathless pace. Kvyat was soon into second, while by mid-distance Vettel had fought his way back into third.
Kvyat kept ahead until lap 35, when - the pair having just stopped - Vettel dived down the inside at Turn 14 to snatch a second he protected until the flag. Kvyat was a close third, booking a Grand Prix podium for only the second time in his career.
Red Bull's great day was completed as Ricciardo drove a brilliantly to recover to fourth, despite being 17th at the end of lap four. After switching to medium tyres on the 37th lap he caught and passed Hamilton, Bottas and Massa, to finish only 6.7s down on his team mate.
Raikkonen, too, recovered well, passing Bottas, Hamilton and Massa in the final stint to take fifth. Massa, meanwhile, was able to keep Hamilton at bay after a tense scrap. The Briton very nearly repeated a superb passing move he had already made on Bottas on the lead Williams on the 46th lap, but when Massa thwarted that, he fell prey to Raikkonen and had to be content with seventh place.
By the finish, the second Mercedes was just a second ahead of a charging Verstappen, who had also had to muscle his way up the order after falling to the back during the frantic rush to pit under the safety car.
The Dutchman's late surge included moves on Force India's Sergio Perez, Toro Rosso team mate Sainz and - three laps from the flag - Bottas. Sainz followed suit, picking off Bottas on the 56th and final lap to book ninth.
Having started on mediums, Alonso ran as high as fourth for McLaren after so many of the supersoft starters had pitted under the safety car, but the Spaniard's bold two-stop race yielded only 12th behind Perez.
Team mate Jenson Button did his best to deny Alonso that, closing rapidly on fresher rubber in the final laps, but eventually had to settle for 13th.
Esteban Gutierrez was Haas' best finisher this time in 14th, ahead of Force India's Nico Hulkenberg who got a five-second penalty for driving unnecessarily slowly in the pit lane during the lap four stops.
Ericsson followed them home for Sauber, as Kevin Magnussen took 17th in a very tough race for Renault which saw team mate Jolyon Palmer finish last. Between them, Pascal Wehrlein starred again for Manor - fending off the likes of Vettel and Button with aplomb after the first round of stops - before eventually finishing 18th, ahead of a troubled Grosjean, who complained his Haas was near-undriveable in the final laps.
Nasr, whose race was compromised in that Turn 1 collision with Hamilton, beat Rio Haryanto in the second Manor to 20th, with Palmer the final runner in a race that featured plenty of incident but - somehow - no retirees.
In the championship, Rosberg now has an early and commanding lead on 75 points, almost double that of Hamilton, in second on 39. Ricciardo is third with 36, with Vettel on 33 and Raikkonen on 28.
In the constructors' stakes Mercedes have 114 points to Ferrari's 61, Red Bull's 57 and Williams' 29.
WATCH: Race highlights from a thriller in Shanghai
Unfortunately, we are unable to play the video at this time.
Error Code: UNKNOWN
0:00 / 0:00