Red Bull’s Sergio Perez held off Ferrari’s Charles Leclerc to win an incident-packed Singapore Grand Prix run in treacherous wet-dry conditions.
Title leader Max Verstappen finished seventh after a frustrating race that included a major error from the Red Bull driver.
Verstappen can win the title in Japan next Sunday, but would need the results of Perez and Leclerc to go his way.
However, Perez is under investigation for a safety car infringement.
Race stewards are due to rule on any penalty after the race. If given a time penalty, he could forfeit the win.
Lewis Hamilton also had a difficult evening under the lights of Marina Bay and finished only ninth after two errors.
The seven-time champion had been stuck behind Ferrari’s Carlos Sainz, who took the final place on the podium, after losing a place to the Spaniard at the start. He made a mistake as he sought to get close enough to pass, running wide at Turn Seven and damaging his front wing.
A second error, running wide at Turn 14, allowed Verstappen passed him for seventh.
Verstappen’s error was similar. He was trying to pass McLaren’s Lando Norris after a restart from one of five safety car periods, two real and three virtual, but locked up and slid straight on, also at Turn Seven.
Verstappen would need to gain eight points on Leclerc – the difference between a win with fastest lap and second place – and nine on Perez to clinch the title at Suzuka on Sunday.
How did the race unfold?
It was a slow-burn race at the front, despite the number of incidents, after a torrential downpour about an hour before the scheduled start led to a delay of about the same time and a start on a wet track.
The drivers found that the track was very slow to dry and it was not until after half distance that it was suitable for slick tyres.
This coincided with the final safety-car period, and all the drivers came in for slick, dry-weather tyres, signalling the moment for the race to come alive.
Perez and Leclerc drove away into the distance from the start as Sainz struggled in the wet conditions, with Hamilton close behind him, and Verstappen behind.
Verstappen was able to quickly regain the four positions he lost with a slow start but then became stuck in seventh place behind Fernando Alonso’s Alpine, until its retirement from an engine failure on lap 22, and then Norris.
Perez had begun to edge away from Leclerc as the intermediate tyres wore down, but Leclerc was clearly quicker immediately after the final restart and started to pile on the pressure.
The Ferrari got close a couple of times on the straight down to Turn Seven but was not quite able to make a passing attempt on a track where overtaking is notoriously difficult.
But the fight ended on lap 48, with 20 minutes remaining in a race limited to the two-hour maximum, when Leclerc made a mistake at Turn 16, running wide, and losing about a second to the Red Bull.
He was told to stay within five seconds because they felt the Mexican may get a penalty for a safety-car infringement – he did not stay within 10 car lengths of the safety car at the second restart after being warned about the same offence at the first one.
He managed to build the gap, finishing 7.6secs behind, but the stewards will rule on the offence later.
Sainz drove a steady if anonymous race to finish third, a long way off the pace of the leaders. And Norris was strong in the McLaren, after passing Alonso at the start, to take fourth, benefiting from the errors made by Hamilton and Verstappen.
It was a good day for McLaren in their fight with Alpine for fourth place in the constructors’ championship with both Alpines retiring with engine failures as Norris’ team-mate Daniel Ricciardo finished fifth.
The Australian, likely to be out of a drive at the end of the season after being dropped by McLaren, was running out of the points until the final safety car period, in which McLaren delayed his stop and he leapt up the field as a result.
The first safety car incident was caused when Zhou Guanyu crashed his Alfa Romeo on lap eight.
Alonso’s engine failure caused the second, a virtual safety car, followed by another VSC four laps later when Alex Albon crashed and left his Williams front wing in a barrier, and a third two laps after that when the engine in Esteban Ocon’s Alpine blew up in a cloud of smoke.
The final safety car was caused by Yuki Tsunoda crashing his Alpha Tauri.