Ferrari's Sebastian Vettel took his first victory since July at the Brazilian Grand Prix, where Lewis Hamilton battled from the back to finish fourth.
Vettel controlled the race after taking the lead from pole position man Valtteri Bottas' Mercedes at the start.
Hamilton, his fourth world title won at the last race in Mexico, provided much of the excitement, carving through the field in the early laps as he attempted to make up for the crash in qualifying that left him at the back of the grid.
He was sixth within 20 laps, and into the lead on lap 30 as leaders Vettel, Bottas, Kimi Raikkonen of Ferrari and Max Verstappen's Red Bull made their pit stops.
Vettel cruised to a comfortable victory that served only as a reminder of what might have been for the German had his and Ferrari's title campaign not collapsed in September and October because of a series of errors by driver and team.
- Listen: 'A rocket ship start from Vettel'
- F1 'needs to do more' after Mercedes robbery
- Robert Kubica set for third Williams test
- Red Bull try to defuse Renault engine row
Hamilton shows his class
Hamilton stayed out, running longer on an inverted tyre strategy and delaying his stop until lap 43, returning to the track in fifth place.
But not before some assured overtaking, including a clever pass around the outside of Force India's Sergio Perez after the Mexican had tried to defend the inside of Turn One.
Hamilton set about chasing a podium place after his pit stop, using the grip advantage of the fresher super-soft tyres in his second stint to attack the cars in front who had started on those tyres but switched to the softs at their earlier pit stops.
Hamilton was 8.4 seconds behind Verstappen when he rejoined after his pit stop on lap 43 and caught the Dutchman by lap 57.
The Mercedes passed the Red Bull into Turn Four on lap 59 and set about trying to close the five-second gap to Raikkonen in the remaining 12 laps.
It took just six laps for Hamilton to catch the Finn but a lock-up into Turn One with four laps to go delayed him and afterwards Raikkonen used his experience to hold him back and just hung on to the final podium place.
"It was fun, it felt like reminiscent of my karting days - starting at the back," he told Sky Sports.
"I messed up yesterday and put myself in the worst position. I was quick enough to win this race. Waking up this morning, my goal was to redeem myself and do the team proud."
Vettel just in control
Vettel was never troubled by Bottas, the only moment of pressure created when Mercedes stopped the Finn a lap earlier than Ferrari did Vettel.
The German returned to the track from his stop with Bottas right behind him, but held him off into Turn Four and never looked back.
He was never very far ahead, but had just enough to maintain a comfortable lead of two or three seconds for most of the race.
"Initially, I had a very good getaway and then I had a bit of wheelspin and I thought I had missed my chance, but then he seemed to struggle more, so I had a chance to squeeze down the inside," Vettel said.
"I think I surprised him a bit. After that and the safety car it was 68 laps flat out. I just tried to build a gap and control the race.
"It has been a tough couple of weeks for us but it is nice to be up here."
What about the other fightback?
Red Bull's Daniel Ricciardo recovered well from his start in 14th on the grid, and then being knocked into a spin on the first lap when Haas' Kevin Magnussen collided with McLaren's Stoffel Vandoorne, who then hit the Australian.
The incident was one of two on a chaotic first lap, in which Haas driver Romain Grosjean lost control trying to pass Force India's Esteban Ocon in Turn Five and took his fellow Frenchman out of the race, for which Grosjean was given a 10-second penalty and two penalty points on his licence.
Knocked to the back of the field, a safety car for three laps ensured he did not lose too much ground and Ricciardo set about recovering lost ground on the same off-set strategy as Hamilton, and did so with familiar panache and aggression, moving into sixth place by half-distance.
He lost a position to Williams' Felipe Massa with his stop, but soon dispatched the Brazilian in his final home race before his retirement at the end of the season and held sixth to the end.
A frustrating race for Alonso
Massa was under pressure from McLaren's Fernando Alonso throughout the race.
Alonso started sixth, his best grid position since joining McLaren-Honda in 2015, and moved into fifth on the first lap past Perez.
But the safety car gave Massa an opportunity to use the superior power of his Mercedes engine to blast past Alonso at the restart and the Spaniard then had a frustrating afternoon staring at the Williams' gearbox but unable to pass because of his lack of straight-line speed.
Alonso spent the last few laps less than a second behind Massa and was right on his tail on the last lap but just failed to get past, while also managing to hold off the resurgent Perez.
Driver of the day
The Formula 1 season ends in Abu Dhabi in two weeks' time, where another close fight between Mercedes, Ferrari and Red Bull can be expected. It will be the last race in F1 for Felipe Massa, and the end of the ill-fated McLaren-Honda partnership.
What they said
Bottas: "I lost it in the race start, very disappointing. I was trying to put pressure but it didn't make any difference, Lewis did a great comeback."
Raikkonen said: "I had a little bit tricky balance in the first set, it improved during the end of the run and the car worked well and I could catch up with the guys but it is impossible to get past here if you have this close speed in the cars.
"Hamilton got close to me, as I got close to Sebastian and Valtteri, but I wasn't too worried. I had a pretty good run out of the last corner so it was OK."