Sebastian Vettel ended the 2013 Formula 1 season with a ninth consecutive race win, as his Red Bull team-mate Mark Webber said goodbye to the championship with second place.
Fernando Alonso gave gallant chase to the Red Bulls and got Ferrari back on the podium, in a race in which rain regularly threatened, but never materialised in sufficient doses to cause a problem.
It was not a totally straightforward win for Vettel, who had to do some overtaking and overcome a pitstop drama.
He lost the lead at the start as both Nico Rosberg and Alonso got away better.
Rosberg led out of the Senna S, but Alonso ran out of space and lost third to the German's Mercedes team-mate Lewis Hamilton.
Both Mercedes were overtaken at the end of lap one though, with Vettel easily reclaiming the lead from Rosberg as Alonso passed Hamilton in their wake.
Webber, who had won a first-lap battle with Felipe Massa, quickly followed Alonso past Hamilton, with both soon overtaking Rosberg as well.
Alonso put up a fight against Webber and did not lose second place until lap 13. He then regained it when the Red Bull had an issue on its right rear wheel at the first pitstops, but Webber only needed two laps to catch and re-pass the Ferrari.
Although Webber was able to chip away at Vettel's lead, the champion was always able to respond.
Vettel's big lead turned out to be crucial as both Red Bulls made simultaneous final pitstops - to the apparent surprise of a crew prepared for Webber, not Vettel.
That halved Vettel's advantage to six seconds, and the lead battle then threatened to come truly alive as rain appeared to loom and both Webber and Alonso started closing in.
In the event, the thick clouds refrained from opening over the final laps, and the top three spread out again, allowing Vettel to take a record-equalling 13th win of the year.
With Rosberg steadily dropping back through the field, Hamilton and Massa began battling for fourth until both hit trouble.
Massa was left furious by a drive-through penalty for crossing the pit entry line on flying laps, while Hamilton tangled with Valtteri Bottas as the Williams driver moved to un-lap himself into the Descida do Lago.
While Bottas was sent crashing into retirement, Hamilton picked up a puncture and was given a penalty for causing the collision.
Those dramas played a part in McLaren's best result of its painful 2013 season, though Jenson Button and Sergio Perez's progress from 14th and 19th on the grid to fourth and sixth was mainly down to excellent race pace from their unloved car. The duo sandwiched Rosberg at the flag.
Massa and Hamilton recovered to seventh and ninth, split by Nico Hulkenberg's Sauber.
Daniel Ricciardo gave Toro Rosso the final point in his last appearance before leaving for Red Bull, holding Paul di Resta, Esteban Gutierrez and Adrian Sutil at bay.
Lotus's promising season came to a miserable end. Romain Grosjean lasted just two laps before a massive engine failure while running eighth, while Heikki Kovalainen was outside the points again in 14th having fallen to 18th on the opening lap.
Marussia beat Caterham in the constructors' championship's tail-end battle for the first time.
Caterham had been the quicker of the pair at Interlagos, but Giedo van der Garde was penalised for ignoring blue flags and Charles Pic had a late suspension failure, meaning Jules Bianchi gave Marussia the 'win' in the race day battle too.
PROVISIONAL RACE RESULTS
The Brazilian Grand Prix
71 laps; 305.909km;
Pos Driver Team/Car Time/Gap
1. Sebastian Vettel Red Bull-Renault 1h32m36.300s
2. Mark Webber Red Bull-Renault +10.452s
3. Fernando Alonso Ferrari +18.913s
4. Jenson Button McLaren-Mercedes +37.360s
5. Nico Rosberg Mercedes +39.048s
6. Sergio Perez McLaren-Mercedes +44.051s
7. Felipe Massa Ferrari +49.110s
8. Nico Hulkenberg Sauber-Ferrari +1m04.252s
9. Lewis Hamilton Mercedes +1m12.903s
10. Daniel Ricciardo Toro Rosso-Ferrari +1 lap
11. Paul di Resta Force India-Mercedes +1 lap
12. Esteban Gutierrez Sauber-Ferrari +1 lap
13. Adrian Sutil Force India-Mercedes +1 lap
14. Heikki Kovalainen Lotus-Renault +1 lap
15. Jean-Eric Vergne Toro Rosso-Ferrari +1 lap
16. Pastor Maldonado Williams-Renault +1 lap
17. Jules Bianchi Marussia-Cosworth +2 laps
18. Giedo van der Garde Caterham-Renault +2 laps
19. Max Chilton Marussia-Cosworth +2 laps
Charles Pic Caterham-Renault 58 laps
Valtteri Bottas Williams-Renault 45 laps
Romain Grosjean Lotus-Renault 2 laps
World Championship standings, round 19:
1. Vettel 397 1. Red Bull-Renault 596
2. Alonso 242 2. Mercedes 360
3. Webber 199 3. Ferrari 354
4. Hamilton 189 4. Lotus-Renault 315
5. Raikkonen 183 5. McLaren-Mercedes 122
6. Rosberg 171 6. Force India-Mercedes 77
7. Grosjean 132 7. Sauber-Ferrari 57
8. Massa 112 8. Toro Rosso-Ferrari 33
9. Button 73 9. Williams-Renault 5
10. Hulkenberg 51
11. Perez 49
12. Di Resta 48
13. Sutil 29
14. Ricciardo 20
15. Vergne 13
16. Gutierrez 6
17. Bottas 4
18. Maldonado 1
All timing unofficial