Ferrari's Fernando Alonso finished fourth, ahead of Force India's Nico Hulkenberg and McLaren's Jenson Button, while Felipe Massa held on for seventh ahead of Williams teammate Valtteri Bottas despite being told by his team to let Bottas through.
Two rookies took the final two points positions, with McLaren's Kevin Magnussen ninth and Toro Rosso's Daniil Kvyat tenth.
On a day when the threatened tropical rain held off, Red Bull's Daniel Ricciardo and Ferrari's Kimi Raikkonen were the leading cars that suffered the worst luck.
Ricciardo was in fourth place with 15 laps to go when the team failed to properly attach a wheel at a pitstop, forcing him to stop halfway down the pitlane and be pushed back to have it replaced. Soon after, the Australian lost his front wing, got a stop-go penalty for an unsafe release from the pitstop and then retired.
Raikkonen was hit from behind by Magnussen on the opening lap, causing a puncture, dropping him to the back of the field. He finished 12th, behind Lotus' Romain Grosjean who surprisingly finished the race in a Lotus that has been very unreliable.