Hamilton’s ninth win of the year and Vettel’s sixth place at Suzuka, after spinning to the back, means Hamilton leads by 67 points with four grands prix remaining.
That means Hamilton only needs to outscore Vettel by eight points at the next race in the United States to clinch a fifth world championship.
Hamilton held his pole advantage at the start and kept Mercedes’ teammate Valtteri Bottas at arm’s length throughout the first stint, which was punctuated by a safety car.
Kevin Magnussen’s Haas picked up a puncture after he moved to the right down the start-finish straight defending from Charles Leclerc and was rear-ended by the Sauber.
The Haas eventually shed the damaged tyre, and bodywork that splintered thanks to the flailing rubber, and the safety car was deployed while the debris was cleared.
By this point a flying start from Vettel had launched him from eighth to fourth, helped by Verstappen’s first incident of the day with a Ferrari.
Verstappen locked up entering the final corner on the opening lap and ran off track, bounced over the grass and kerb as he rejoined at the second part of the chicane.
That resulted in light contact with Kimi Raikkonen, who was forced wide as he tried to pass the Red Bull on the outside, and allowed Vettel to sneak ahead of his teammate.
When the safety car period ended on lap eight, Vettel attacked Verstappen, who had been handed a five-second penalty for the Raikkonen incident.
Vettel tried to sneak inside Verstappen into the fast Spoon left-hander, but carried too much speed and made light contact with the Red Bull and spun onto the run-off.
Verstappen managed to continue without losing a position to Raikkonen but Vettel dropped to the back – the stewards looked into the clash but took no further action.
Despite his early time penalty, Verstappen was able to maintain third ahead of Raikkonen thanks to Ferrari pitting the Finn first and releasing him into traffic.
That also allowed the second Red Bull of Daniel Ricciardo, who had started 15th after a problem in qualifying, to jump Raikkonen after carving through the order in a stellar opening stint.
The lead order settled thereafter, with Hamilton constantly extending his lead as Bottas came under late pressure from Verstappen.
Bottas survived a mistake at the final corner with six laps to go, which resulted in him skipping across the chicane, to complete a Mercedes one-two for the second race in a row.
Raikkonen drifted further away from the Red Bulls in fifth, while Vettel gradually making his way back to sixth – but by the time he was clear of the rest of the field, he was a minute behind Hamilton and 40 seconds behind Raikkonen.
That gap shrank to 18.8s at the flag as Ferrari opted not to switch the drivers, denying Vettel an extra two points.
Sergio Perez stole best-of-the-rest honours in seventh after Racing Point Force India mugged Haas and Toro Rosso with a superior strategy.
Romain Grosjean and Pierre Gasly ran sixth and seventh early on for their respective teams, but Force India stopped Perez and Esteban Ocon earlier than their immediate rivals.
The fresh-tyre advantage allowed them to jump Gasly, before Perez caught and passed Grosjean after a virtual safety car called to deal with Charles Leclerc’s stricken Sauber.
Ocon was not able to match his teammate and finished ninth, with Carlos Sainz beating Gasly to the final point after passing him late on.
That meant Toro Rosso failed to score at all after qualifying sixth and seventh for engine supplier Honda’s home grand prix.
Brendon Hartley finished 12th after a muted race in which he had already plunged from sixth to 10th after a poor start.
Only three cars retired from the grand prix – Magnussen, Leclerc, who had also been rear-ended by teammate Marcus Ericsson just as they prepared for the restart after the safety car and Renault’s Nico Hulkenberg.