A one-two for Mercedes with Valtteri Bottas second sealed a record seventh consecutive constructors' championship.
In the drivers' title chase, Hamilton is 85 points clear of Bottas, who was promoted to second when Red Bull's Max Verstappen suffered a puncture.
Hamilton will win the title at the next race as long as Bottas does not out-score him by more than seven points.
Williams driver George Russell was on target to score his first F1 points but the Briton crashed while trying to warm his tyres behind the safety car.
How did Hamilton win?
Hamilton dropped behind Verstappen to third after making a poor start, but had moved into a winning position before the virtual safety car made his victory certain.
The race had been shaping up for a tense scenario, one in which the advantage was with Hamilton.
He decided to stay out longer before his pit stop - after Bottas and Verstappen had stopped for fresh tyres - to try to extend enough of a lead to stop and stay in front.
Bottas was struggling with a damaged car - a large piece of Ferrari debris was trapped in his 'barge boards' behind the front wheels and costing at least 0.5secs a lap - and holding off Verstappen, and Hamilton put in a string of fastest laps to extend his advantage.
The Finn had just been told by his engineer that he was "one second unsafe to Lewis" - meaning that Hamilton had enough of a lead to pit and emerge still in the lead - when race director Michael Masi called the virtual safety car to recover Esteban Ocon's stricken Renault.
The safety car was out for not much longer than Hamilton was in the pits for his fresh tyres and he was able to emerge with a four-second lead and cruise to the flag.
Bottas appeared to have lost second place to Verstappen when he made one too many mistakes locking his front wheels into Rivazza.
On lap 42, the Finn ran wide and just slipped on to the edge of the gravel, allowing Verstappen to close up and pass into Tamburello at the start of the next lap.
But a right-rear puncture 10 laps later smashed his suspension and sent him spinning into the gravel, promoting Bottas back to second.
More jeopardy than it looked
Although Hamilton appeared to be in control once he took the lead, there were concerns in the Mercedes pit.
They were noticing vibrations from his rear tyres in the second part of the race - a tell-tale sign of a potential imminent failure - and Mercedes began to think they would need to stop again.
As a result of this concern, once Verstappen's tyre had failed, Mercedes would have stopped both cars for fresh tyres regardless of whether there had been a safety car or not.
It is not yet known why Verstappen's tyre failed. It was well within the expected wear life and Pirelli will investigate whether the failure was caused by debris or was influenced by certain circuit characteristics that put extra strain into tyres - notably a high-grip track surface and kerbs that put a lot of energy through the tyres.
A frantic final few laps
Verstappen's crash meant the safety car was sent out to clear the damage and it led to an action-packed fight for third place in the closing laps.
But before the safety car period ended Russell lost control trying to warm up his tyres, sliding into the barrier.
The highly rated Briton, who will drive for Williams again next season, cut a dejected figure as he walked away from his wrecked car, then sat against fencing and struck his knee several times in frustration.
Renault's Daniel Ricciardo, Ferrari's Charles Leclerc and Red Bull's Alexander Albon decided not to stop for fresh tyres, to protect track position, while Racing Point's Sergio Perez, Alpha Tauri's Daniil Kvyat and the McLarens of Carlos Sainz and Lando Norris stopped for fresh soft tyres, as the Mercedes cars had done at the front.
At the restart, Ricciardo, Leclerc and Albon struggled with getting their tyres up to temperature and Kvyat shot past Albon and Perez in one move into Tamburello, before passing Leclerc up the hill out of Tosa.
But Ricciardo managed to hold off the Russian to take his and Renault's second podium in three races, with Kvyat an impressive fourth, making up for his team-mate Pierre Gasly, who had qualified there, retiring with an engine problem in the early laps.
Leclerc managed to hold off Perez for fifth, with the McLarens of Sainz and Norris seventh and eighth.
Albon spun as Kvyat passed him at the Villeneuve chicane and resumed to finish 15th and last - not what he needed when his seat is at risk for 2021.
Driver of the day
What happens next?
A two-week break before the Turkish Grand Prix, when F1 returns to the Istanbul Park circuit, a great track with a famous, high-speed triple apex left-hander that has hosted some exciting races.
What they said
Hamilton: "It was an exhausting race, the speed we were having to go after a poor start. It is very overwhelming right now. I look at my crew and I know all the men and women here and back in the factory and they are the unsung heroes."
Bottas: "I think [the damage] made quite a big impact today. The start was good, that was one of the main things to get right today. I was pushing hard to avoid Max getting through. I had to push over all of my limits which led to a few mistakes. Unlucky."
Ricciardo: "It was a bizarre one, I'm not sure what happened to Max but that put us in the fight for a podium. [Team boss] Cyril [Abiteboul] will not be getting another tattoo though."