Spaniard Dani Pedrosa claimed his first MotoGP win in only his fourth race after defending champion Valentino Rossi failed to finish in China.
The reigning 250cc champion's maiden victory in the blue riband class came after he edged out Nicky Hayden, his American team-mate at Repsol Honda, by 1.5 seconds.
American Colin Edwards was third on the Camel Yamaha at Shanghai.
Rossi, who began the race 13th on the grid, went out with five of the 22 laps remaining and now lies sixth in the championship standings, 32 points behind leader Hayden.
The American has 72 points, with Italian Loris Capirossi second on 59 on the Ducati Marlboro machine and Pedrosa third on 57.
Spaniard Hector Barbera recorded his first 250cc race win on the Fortuna Aprilia, with Italian Andrea Dovizioso second on the Humangest Honda and Hiroshi Ayoama third for Red Bull KTM.
Herefordshire's Chaz Davies was 17th on the Campetella Aprilia.
Finland's Mika Kallio won the 125cc race on the Red Bull KTM, with Italy's Mattia Pasini second ahead of Spanish team-mate Alvaro Bautista as the Master Aspar Aprilia team filled the bottom two steps of the podium.