Hamilton collected his 90th career win, taking the chequered flag 4.8 seconds clear of Valtteri Bottas in the other Mercedes at Mugello.
London-born Thai Alexander Albon finished third to claim his first podium. Hamilton also secured a bonus point for the fastest lap to increase his lead in the standings to 55 points.
The race was first stopped on lap nine following a jaw-dropping four-car pile-up, which led Romain Grosjean to accuse the then-leader Bottas of “wanting to kill” him at the safety car restart.
Bottas was controlling the pace to avoid Hamilton, who he had beaten off the start-line, from getting a slipstream into the opening corner.
But the drivers behind were too eager to get on the accelerator pedal. In the middle of the pack, rookie Nicholas Latifi jumped on the gas but then had to brake dramatically.
A concertina effect followed with Antonio Giovinazzi slamming into the back of the Williams driver. McLaren’s Carlos Sainz then hit Giovinazzi with the Italian driver sent airborne.
Haas driver Kevin Magnussen was also taken out in the dramatic accident with all four cars ending up in the barriers along the pit straight. Fortunately, the quartet escaped without injury.
“That was f****** stupid from whoever was at the front,” Grosjean yelled over the radio. “They want to kill us or what? This is the worst thing I have ever seen.”
For the second time in as many Sundays, the race was stopped to deal with the debris and a 26-minute delay ensued.
The safety car had earlier been deployed after just two corners when Pierre Gasly became the meat in a Kimi Raikkonen-Grosjean sandwich.
Verstappen, who was sliding back through the pack after losing power, was punted from behind. He ended up in the gravel with Gasly.
Sebastian Vettel also lost his front wing after he could do little to avoid a spinning Sainz.
Following the dramatic opening exchanges, six drivers had already retired and that soon became seven with Esteban Ocon unable to continue in his struggling Renault.
The first red-flag period led to a standing start but after a poor getaway first-time round, Hamilton made no mistake on the second, moving into Bottas’ slipstream before assuming the lead round the outside of the opening bend.
On the occasion of Ferrari’s 1,000th race, Charles Leclerc had moved up to third from fifth but it was not long before his weak machinery was exposed and he fell back down the order.
At the front, Hamilton was in control and looked on course for an easy win after building up a seven-second lead over Bottas – but on lap 43 the race was stopped for a second time.
Lance Stroll lost control of his Racing Point through the second Arrabbiata, and crashed into the tyre wall. Stroll, running fourth, sustained serious damage to his car in the accident – which was caused by a left-front puncture – but the Canadian emerged unscathed from his cockpit.
Stroll’s stricken car was removed, the tyre barrier was repaired, and after a 23-minute stoppage, there was a third standing-start on this most frenetic of afternoons.
Hamilton raced away from his blocks to retain his lead but Bottas slipped behind Daniel Ricciardo. The Finn made it back past Ricciardo on the next lap but his best chance of beating Hamilton to the flag was over.
Albon then battled his way past Ricciardo at Turn 1 with eight laps remaining to claim his first top-three finish at his 30th attempt.
A miserable afternoon was completed for Ferrari with Leclerc and Vettel finishing ninth and 10th of only 12 classified runners. Leclerc was bumped up to eighth after Raikkonen was hit with a five-second penalty. Ricciardo was fourth ahead of Sergio Perez and British driver Lando Norris.