Valtteri Bottas's first Formula 1 win since April helped Mercedes clinch a sixth consecutive constructors' championship as a messy start and first-corner clash undermined Ferrari's Japanese Grand Prix.
Bottas launched from third to first on the run to the first corner, passing both Ferraris as Leclerc got away slowly and poleman Vettel erred significantly - losing time by moving slightly before the lights went out.
That put Bottas into a lead he was able to convert to victory, while Vettel avoided a jump-start penalty - despite replays clearly showing he moved before the red lights went out - to finish second but could not stop Mercedes wrapping up the teams' title.
After Vettel immediately dropped to second, Leclerc's race was massively compromised moments later at the first corner.
Max Verstappen swept around the outside of Lewis Hamilton and Leclerc after a superior start in his Red Bull, but Leclerc then ran deep into Turn 2 as the corner tightened.
He went wide and clattered into Verstappen, throwing the Dutchman off-track and breaking his own front wing.
Leclerc continued for two laps in third place, irritating Hamilton as the Ferrari's damaged wing showered the chasing Mercedes with sparks and then debris - which broke Hamilton's right-side wing mirror.
On lap three, Leclerc pitted and dropped to the tail of the field behind Verstappen - as race control communicated that their first-lap incident would be investigated after all, having initially said it was not necessary.
As Leclerc charged back to sixth, Verstappen struggled with an oddly-handling, damaged car and retired on lap 15. The clash investigation was moved to after the race, when Leclerc was given a 15s penalty to cover both the collision and continuing with the broken wing.
Vettel's fortune with the officials allowed him to stay in the lead fight and hold up Hamilton, allowing Bottas to take control and he stretched his lead.
Ferrari moved first in the strategy fight, pitting Vettel on lap 16 of 53 with Bottas following suit one lap later and Hamilton stopping on lap 20.
In that time, Bottas's advantage over Vettel rose while Hamilton fell more than 20s adrift, a move that left him irate over the radio.
All three committed to a two-stop strategy - despite Mercedes initially indicating to Bottas that Hamilton would one-stop - but executed it differently. Vettel pitted on lap 31 of 53 and ditched his softs for mediums, while the Mercedes ran longer and opted for softs.
Bottas stopped on lap 36, at which point he was 14s clear of Hamilton, and Hamilton ran an extra seven laps before making his final visit to the pits.
That left Bottas leading Vettel by under 10s, with Hamilton within five seconds behind the Ferrari and armed with fresher, softer tyres.
With five laps to go Hamilton moved into DRS range and had half a look into Turn 2 but Vettel didn't budge and Hamilton ran slightly wide.
Hamilton had a better chance with three laps to go when Vettel got stuck at the final chicane trying to lap Pierre Gasly's Toro Rosso, backing Vettel into Hamilton and giving the Mercedes a great run.
But Hamilton closed too late on the straight to properly attack, and Vettel retained the place to the end.
Bottas's win, his first since the Azerbaijan GP at the end of April, trimmed Hamilton's championship lead to 66 points with 104 still on offer.
Alex Albon scored his best F1 result with fourth place for Red Bull, despite falling behind both McLarens at the start.
He made one of those places back early on with a lunge on Lando Norris that resulted in wheel-to-wheel contact into the final chicane.
Albon got ahead of Carlos Sainz Jr by stopping twice as Sainz implemented a one-stop strategy to finish a fine fifth.
McLaren should have had a double points finish but, after being hit by Albon, Norris had to make an early pitstop because debris from Leclerc's broken wing got caught in his brake ducts. He eventually finished 13th.
Daniel Ricciardo charged to what became sixth place with Leclerc's penalty, executing a very long first stint on medium tyres then switching to softs at the end and picking off several cars with just a few laps remaining.
He passed team-mate Nico Hulkenberg for ninth and promised his Renault team "I'll get them" as he pursued Lance Stroll and Pierre Gasly, who he then cleared on successive laps.
Stroll faded from the top 10 late on, with Hulkenberg nicking ninth and Sergio Perez set to steal the final point from Racing Point team-mate Stroll on his penultimate lap.
Having also passed Hulkenberg, Perez crashed out on the final lap after contact with Gasly, promoting Stroll to 10th.
But the race result has provisionally been declared over 52 laps, not 53, because of a systems error - which hands Perez ninth and drops Stroll back out of the top 10.
|4||Alexander Albon||Red Bull/Honda||52||59.537s|
|5||Carlos Sainz Jr.||McLaren/Renault||52||1m09.101s|
|6||Charles Leclerc||Ferrari||51||1 Lap|
|7||Pierre Gasly||Toro Rosso/Honda||51||1 Lap|
|8||Sergio Perez||Racing Point/Mercedes||51||1 Lap|
|9||Lance Stroll||Racing Point/Mercedes||51||1 Lap|
|10||Daniil Kvyat||Toro Rosso/Honda||51||1 Lap|
|11||Lando Norris||McLaren/Renault||51||1 Lap|
|12||Kimi Raikkonen||Alfa Romeo/Ferrari||51||1 Lap|
|13||Romain Grosjean||Haas/Ferrari||51||1 Lap|
|14||Antonio Giovinazzi||Alfa Romeo/Ferrari||51||1 Lap|
|15||Kevin Magnussen||Haas/Ferrari||51||1 Lap|
|16||George Russell||Williams/Mercedes||50||2 Laps|
|17||Robert Kubica||Williams/Mercedes||50||2 Laps|
|-||Max Verstappen||Red Bull/Honda||14||Accident damage|
|6||Carlos Sainz Jr.||76|