Sebastian Vettel takes win, Lewis Hamilton narrowly misses podium after starting in pits
Sebastian Vettel won the Brazilian Grand Prix to take some consolation points in the title standings, as world champions Lewis Hamilton finished fourth after starting in the pit lane.
Bottas crossed the line second, 2.7 seconds adrift, with Ferrari's Kimi Raikkonen holding off a charging Lewis Hamilton, who had started from the pitlane, to finish third for the third race in succession.
Vettel made a great start from second on the grid and though Bottas gave him a squeeze into Turn 1, the Ferrari driver made the move stick.
Ricciardo was spun round, dropping him to the back of the field, but he continued while Vandoorne and Magnussen retired immediately.
That incident sparked a safety car and was not the only clash on the opening lap - Esteban Ocon suffered the first retirement of his F1 career after being tagged by Romain Grosjean, who lost control of his Haas at Turn 5.
Grosjean continued, but was handed a 10-second time penalty for causing the collision, and ultimately finished 15th.
At the restart, Vettel retained the lead from Bottas, Raikkonen and Max Verstappen, with Felipe Massa delighting his home crowd with a pass around the outside of Fernando Alonso into Turn 1 for fifth.
Hamilton, running on soft tyres, made good progress through the field and was up into the points by lap nine, passing Pierre Gasly for 10th.
Bottas was the first to pit for softs, with Vettel pitting a lap later and rejoining just ahead of the Mercedes driver, managing to hold him off into Turn 4.
As those who started the race on the super-softs pitted, Hamilton inherited the lead and pushed on until lap 43, when he pitted, rejoining 15th - 19 seconds behind Vettel.
The four-time world champion was the fastest driver on the track, catching and passing Verstappen around the outside on the run to Turn 4 with 12 laps to go.
He then rapidly caught Raikkonen but a lock-up into Turn 1 dropped him back and he could not attack the Ferrari before the race's end.
Verstappen, who struggled with his tyres in the closing stages leading to a late stop for super-softs, was fifth ahead of Red Bull team-mate Ricciardo.
Massa held off Alonso to take seventh in his final Brazilian Grand Prix and penultimate race of his F1 career.
Sergio Perez took ninth, crossing the line right behind Alonso, with Nico Hulkenberg scoring Renault's first point since Singapore with 10th.