Laverty had led early on but slipped back into second place before making his move with two laps to go.
And he held on to record his second victory in as many rounds after his win at Assen in the Netherlands a fortnight ago.
In the first race, the Toomebridge rider had led for much of the race but was pipped at the final bend by Marco Melandri with Tom Sykes in second place.
The 11th race win for the home rider - his maiden on the Italian track - was a perfect display of racecraft, as Melandri entered the final lap in third position and immediately overtook Sykes and then made a successful move on Laverty.
The three riders crossed the line side-by-side, with Melandri winning by 0.085 seconds over Laverty and by 0.107 seconds on Tom Sykes.
Laverty's fellow Ulster man Jonathan Rea finished in eighth place in the first race but was forced to retire in the second..