The Yamaha rider took the lead away from Andrea Dovizioso on the first lap, as poleman Andrea Iannone was relegated to third.
After the worst qualifying result of his career, Marc Marquez charged from 13th on the grid to fourth by the end of the opening tour, before making quick work of the Ducatis at San Donato on successive laps.
Lorenzo then had Marquez on his tail but was able to pull away from his fellow Spaniard and went on to win by 5.5 seconds, although his advantage had been more than 8s at one stage.
Marquez battled with the two Ducatis for most of the race, and was fighting to reclaim second from Iannone when he crashed out with five laps to go.
Iannone held on to second place to score the best result of his MotoGP career, but any hopes of a double podium for Ducati at home were lost when Dovizioso pitted with a bike issue after slipping down the order.
Valentino Rossi instead claimed a popular podium finish in third, fighting back after a lacklustre start had left him 10th at the end of lap one. He stays in the championship lead, six points ahead of Lorenzo.
Dani Pedrosa was fourth while Bradley Smith took fifth after fellow Briton Cal Crutchlow suffered a second big crash of the day in the closing stages. The LCR Honda rider had earlier hurt himself in a shunt during warm-up.
Pol Espargaro followed his Tech 3 Yamaha team-mate Smith across the line in sixth ahead of Suzuki's Maverick Vinales and third Ducati rider Michele Pirro.
Danilo Petrucci survived an early clash that caused Aleix Espargaro to crash out to finish ninth in front of Pramac team-mate Yonny Hernandez.