Sebastian Vettel ended a 392-day win-less streak as he fronted a Ferrari 1-2 during a Singapore Grand Prix that was dictated by pit stop strategy.
Vettel, who had not claimed victory since last year's Belgian Grand Prix, used the undercut to jump from third to first during the pit stop phase, after which he was never headed.
It marked a record fifth Singapore Grand Prix win for Vettel, following on from prior successes in 2011, 2012, 2013 and 2015.
Singapore GP: Drivers' Standings | Constructors' Standings | Race Result
Pole-sitter Charles Leclerc classified a frustrated second as his chance of a hat-trick of wins slipped away, but his runner-up position ensured Ferrari's first 1-2 result since Hungary 2017.
Lewis Hamilton extended his first stint longer than his opponents but the overcut failed to pay off and he slipped from second to fourth, with Red Bull's Max Verstappen taking the final podium spot.
Hamilton nonetheless extended his title advantage over Mercedes team-mate Valtteri Bottas, who placed fifth.
The top six drivers all maintained their grid positions through a relatively uneventful start procedure, and spent the early stages in cruise mode in order to save tyres.
At one point the pace was 13 seconds slower than the ultimate Q3 pace, with drivers who had stopped for first lap damage – Nico Hulkenberg and George Russell – actually trading best lap times for a spell.
Third-placed Vettel was the first to pull the pin on lap 19, followed in by fourth-placed Verstappen, while a lap later leader Leclerc came in to change tyres, all switching to Hard tyres.
Hamilton remained out, inheriting the lead, while through stopping one lap earlier Vettel was able to jump Leclerc, who radioed his frustration at the situation.
Hamilton pushed on at a relatively tardy pace, acknowledging to Mercedes that "I know the times aren't great but it's all they have," before coming in on lap 26.
That dropped him behind Verstappen, ostensibly leaving the Ferrari drivers a net 1-2, as they worked their way through yet-to-stop midfield drivers.
Vettel battled his way past Daniel Ricciardo and Lance Stroll before compliant leader Antonio Giovinazzi – becoming the first driver from outside a top three team to lead a race since 2015 – moved aside.
That left Vettel at the head of the race while Leclerc worked his way through to second, by which time the four-time World Champion had established a six-second advantage.
The remainder of the front-runners were also strung out by the time the late stoppers were cleared, with Verstappen four seconds down on Leclerc, Hamilton six seconds further back, and Bottas facing another four seconds to his team-mate.
However that deficit was soon reduced as the Safety Car was deployed on lap 36, when backmarkers Romain Grosjean and Russell clashed through Turn 8.
Grosjean tried to pass Russell around the outside of the corner but the pair collided, with Russell tipped into the wall on the outside, causing terminal damage to his FW42.
There was only a brief interlude of green flag racing, in which the leading positions did not change, before Sergio Perez's Racing Point slowed and stopped along the back straight.
Leclerc requested maximum engine modes and suggested the situation was "not fair" while insisting he "wouldn't do anything stupid", as Ferrari issued a message to bring the car home.
Vettel preserved his lead at the restart, given with 14 laps to go, followed by Verstappen and the two Mercedes drivers, but the Safety Car was called once more just a few laps later.
Daniil Kvyat tried to pass Kimi Raikkonen into Turn 1 but the pair clashed, leaving Raikkonen's Alfa Romeo stranded in the run-off with broken front-right suspension.
That final incident left a 10-lap sprint to the chequered flag but none of the front-runners seriously challenged each other as they all spread out around the 23-turn Marina Bay Circuit.
Behind the two Ferraris, Verstappen and the two Mercedes drivers was Alexander Albon, who remained at the back of the lead sextuplet throughout, while Lando Norris was an excellent seventh for McLaren.
Pierre Gasly, who was briefly second on account of running a Hard/Medium approach, rose to eighth, ahead of Renault's Nico Hulkenberg, while erstwhile leader Giovinazzi rounded out the top 10.
Grosjean, after his clash with Russell, wound up 11th, narrowly fending off Carlos Sainz Jr., whose prospects were dented when he was hit by Hulkenberg on the first lap.
Lance Stroll sustained a puncture when he brushed wheels with Gasly but recovered to 13th spot, while Daniel Ricciardo was involved in a scrape with Giovinazzi as he took 14th.
Kvyat, Robert Kubica and Kevin Magnussen were the final classified runners.
The next round of the season will take place at the Sochi Autodrom, Russia, next weekend.