Sebastian Vettel hung on to win his third Formula 1 world title by finishing sixth in an astounding Brazilian Grand Prix won by Jenson Button.
Vettel's title rival Fernando Alonso battled to second in the wet/dry event, which was led for a long time by Nico Hulkenberg until the Force India clashed with Lewis Hamilton.
Despite Vettel getting involved in a first-lap crash and suffering a pit delay, he still managed to recover sufficiently to ensure that even Alonso's runner-up finish could not deny the Red Bull driver the title at the end of an epic season. Alonso's Ferrari team-mate Felipe Massa took third.
Vettel's afternoon had immediately become more complicated as a tentative start and first corner in drizzly conditions dropped him to seventh, while Alonso swept around the outside to move up to fifth.
Then as the pack jostled into the Descida do Lago, Vettel made heavy contact with Bruno Senna, spinning the Red Bull and also collecting Sergio Perez.
While the Sauber and Williams were both out, Vettel was amazingly able to continue despite several wounds to his Red Bull. He then tore through the field and was up to seventh place from 22nd by lap eight.
Meanwhile Alonso charged into a potentially title-clinching third by diving past Felipe Massa and Mark Webber in a single move as they battled into the Senna S.
But an error at the same point two laps later meant Alonso lost a place to Hulkenberg, who had quickly dismissed Webber and Massa in a blistering early charge.
The McLarens still led at this stage, with Button all over Hamilton as the rain steadily increased.
The worsening conditions prompted everyone bar Button and Hulkenberg to dive to the pits for intermediates.
That initially put Alonso and Vettel down to 12th and 17th respectively, although they were both back in the top five within five laps via a mix of bold passes and others pitting.
Up front, Force India's incredible performance continued as Hulkenberg edged up behind Button before passing down the outside into the Senna S on lap 19.
By that time the pair were in a class of their own. They had been left 45s clear once the rest of the field went for intermediates, and with the shower passing, their rivals were all now having to stop.
Hulkenberg began to pull away, but debris was littering various corners from earlier incidents, and when Nico Rosberg's Mercedes picked up a puncture the decision was taken to call out the safety car.
At the restart on lap 29, Hulkenberg led Button, Hamilton, Alonso, Vettel, Kobayashi and Webber. Kobayashi and Webber immediately pounced on Vettel, although Webber ran out of space at the Senna S and shot over the run-off.
Kobayashi's charge soon took him past Alonso to fourth, although the Ferrari did not take long to regain the place, whereas Vettel had no answer to the Sauber.
Massa, who lost a lot of ground by staying on slicks too long and going to intermediates far too late, completed a recovery charge by passing both Vettel and Kobayashi to slot into fifth behind team-mate Alonso, who could not stay with the top three.
Hamilton overtook Button for second shortly after the restart, but Hulkenberg appeared comfortable in the lead until lap 49, when a half-spin at the Bico do Pato let the McLaren through.
Hulkenberg did not let the McLaren escape, and as they jostled through traffic on lap 54, the Force India slipped ahead into the Senna S, only to slide into a spin and hit Hamilton.
Despite bouncing onto two wheels, Hulkenberg was able to continue in second behind Button, although he did pick up a drive-through penalty for causing the clash. Hamilton had to retire from his McLaren farewell.
The return of the rain was a factor in the incident, and as the track became slippery again, everyone opted for intermediates. Vettel was among the first to pit, but Red Bull was not ready, leading to a long delay.
He was rapidly able to get back up to sixth, which was sufficient even with Alonso getting up to second thanks to the Hulkenberg/Hamilton tangle and some assistance from Massa, whose well-timed intermediate switch had got him ahead of his team-mate.
The race then came to a slightly underwhelming conclusion as Paul di Resta crashed heavily on the pits straight kink and brought out the safety car with a lap to go.
That clinched the win for Button, and meant that despite Ferrari's double podium finish, Vettel's sixth place gave him championship number three by a three-point margin.
Webber recovered from a variety of adventures, including an early clash with Kobayashi, to take fourth ahead of Hulkenberg and Vettel.
Michael Schumacher claimed seventh in the final race of his F1 career, despite a late brush of wheels with Kobayashi, who consequently spun to ninth behind Jean-Eric Vergne.
Superb underdog performances in the treacherous early laps led to Caterhams, Marussias and HRTs all appearing in the top 10, with Heikki Kovalainen and Timo Glock as high as sixth and seventh.
The battle ultimately came down to Charles Pic versus Vitaly Petrov for 12th place, with the Russian battling past the Frenchman to give Caterham 10th in the championship in what became 11th place when di Resta crashed.
But for that incident, Daniel Ricciardo was set to pass both Pic and Petrov, which would have given Marussia 10th place back again.
Raikkonen had a wild afternoon, starting when he nearly wiped out Vettel moments before the Senna tangle, and also including a long excursion at Juncao where the Lotus driver tried to use an access road to rejoin only to encounter a closed gate. He finished 10th.
Romain Grosjean and Pastor Maldonado's eventful years came to messy ends with both crashing in the opening laps.
PROVISIONAL RACE RESULTS
The Brazilian Grand Prix
71 laps; 305.909km;
Weather: Mixed conditions.
Pos Driver Team Time
1. Button McLaren-Mercedes 1h45:22.656
2. Alonso Ferrari + 2.754
3. Massa Ferrari + 3.615
4. Webber Red Bull-Renault + 4.936
5. Hulkenberg Force India-Mercedes + 5.708
6. Vettel Red Bull-Renault + 9.453
7. Schumacher Mercedes + 11.900
8. Vergne Toro Rosso-Ferrari + 28.600
9. Kobayashi Sauber-Ferrari + 31.200
10. Raikkonen Lotus-Renault + 1 lap
11. Petrov Caterham-Renault + 1 lap
12. Pic Marussia-Cosworth + 1 lap
13. Ricciardo Toro Rosso-Ferrari + 1 lap
14. Kovalainen Caterham-Renault + 1 lap
15. Rosberg Mercedes + 1 lap
16. Glock Marussia-Cosworth + 2 laps
17. De la Rosa HRT-Cosworth + 2 laps
18. Karthikeyan HRT-Cosworth + 2 laps
19. Di Resta Force India-Mercedes + 3 laps
Fastest lap: Hamilton, 1:18.069
Driver Team On lap
Hamilton McLaren-Mercedes 55
Grosjean Lotus-Renault 6
Maldonado Williams-Renault 2
Senna Williams-Renault 1
Perez Sauber-Ferrari 1
World Championship standings, round 20:
1. Vettel 281 1. Red Bull-Renault 460
2. Alonso 278 2. Ferrari 400
3. Raikkonen 207 3. McLaren-Mercedes 378
4. Hamilton 190 4. Lotus-Renault 303
5. Button 188 5. Mercedes 142
6. Webber 179 6. Sauber-Ferrari 126
7. Massa 122 7. Force India-Mercedes 109
8. Grosjean 96 8. Williams-Renault 76
9. Rosberg 93 9. Toro Rosso-Ferrari 26
10. Perez 66
11. Hulkenberg 63
12. Kobayashi 60
13. Schumacher 49
14. Di Resta 46
15. Maldonado 45
16. Senna 31
17. Vergne 16
18. Ricciardo 10