The 28-year-old two-time world champion — who was winning three in a row for the fourth time in his career — beat home pole sitter Andrea Iannone of Italy on a Ducati with Italian legend Valentino Rossi third on another Yamaha claiming his 10th successive podium finish.
Rossi leads the world championship standings, but by only six points from Lorenzo.
Two-time defending world champion Marc Marquez failed to finish, crashing out on his Honda with six laps remaining.
Lorenzo, world champion in 2010 and 2012, said that it was hard to judge if he was in the best form of his life.
“I've been in this sort of form in the past,” said Lorenzo puffing out his cheeks.
“But the bike is in great shape.
“I took control of the race with a brave overtaking of Dovizioso and even though I lacked some pace I had enough to win.
“I've won three races in a row before but now I want to make it four (Catalunya in a fortnight),” added Lorenzo, who was winning his fourth Italian MotoGP in the last five editions.
Iannone — who adopted the nickname 'maniac Joe' — was delighted to have secured second spot especially as he is recovering still from a dislocated shoulder, although the first win in this category still eludes him.
“My head is strong, that is why I can ride like I do,” said Iannone.
“Victory was too difficult because Jorge was so strong but I never give up and I pushed a lot.”
For Rossi, who is seeking his 10th world title in all categories, it was a better than expected result as he had started from eighth place on the grid.
“I'm happy because I made the podium which is a good result,” said the 36-year-old, who won two of the first three races this season.
“During the race I suffered and it has been a difficult weekend but ultimately I am satisfied with retaining the lead in the title race.”
The race got off to a blistering start as Iannone looked to have got a jump start but he was overtaken by team-mate Dovizioso and then Lorenzo, who then assumed the lead on the first lap while Marquez scorched through the field from 13th to be fourth.
Rossi, though, had an awful start dropping to 11th though he repaired the damage slightly by finishing the first lap in ninth.
Marquez moved into third on the opening half of the second lap of the 23 lap race passing Iannone with nonchalant ease and then ate up Dovizioso to go second.
The Italian fought back to regain second spot with 17 laps remaining while Marquez' team-mate Dani Pedrosa started to creep up on the leading quartet.
It developed into a thrilling battle between the Ducatis and the Yamahas with Marquez being demoted to fourth by Iannone to rapturous cheers from the 80,000 spectators packing the stands before the Spaniard struck back and regained second.
As they exchanged positions regularly it was Rossi who edged closer to joining their party and going out into the country with 11 laps to go 'The Doctor' was on the shoulder of Dovizioso whom he took care of soon afterwards to stupendous roars from his devoted following.
Dovizioso's race seemed to be run and two laps later he steered his bike into the pits with mechanical trouble.
Disaster was to strike for Marquez with six laps remaining as he went low on the ground to try and overtake Iannone only to come to grief and slide into the sand — the Spaniard walking away shaking his head in frustration while cheers rang out from the stands.
The decibel level went even higher if that was imaginable later on the lap as Rossi got the better of Pedrosa to move into third.