The Irishman passed his French colleague with two laps remaining to secure his fourth victory in the series.
Marco Melandri, who crashed out of race one, completed the podium.
Laverty started from the front as pole sitter Carlos Checa was in hospital for checks after that crash with Melandri.
He lost the position to Tom Sykes at the first corner but was back leading by lap two, with Guintoli moving up into second.
Chaz Davies and Loris Baz collided and crashed out, with Britons Leon Haslam and Leon Camier delayed as a result.
Melandri, Michel Fabrizio, Davide Giugliano and Jules Cluzel all passed Sykes in the first half of the race, with Melandri moving away to form a close front three with Guintoli, now leading, and Laverty.
With six laps remaining the Italian passed Laverty - but the Aprilia man returned the favour three laps from the finish before setting a record lap of 1:31.168 to close on Guintoli again - then overtook him for the win.
Fabrizio was fourth ahead of Sykes, who recovered in the second half of the race, Giugliano and Cluzel.
Britons Jonathan Rea, Camier and Haslam rounded out the top 10.
1. Eugene Laverty IRL Aprilia 33m 45.938s
2. Sylvain Guintoli FRA Aprilia +0.418s
3. Marco Melandri ITA BMW GoldBet +1.382s
4. Michel Fabrizio ITA Red Devils Roma Aprilia +2.282s
5. Tom Sykes GBR Kawasaki +11.545s
6. Davide Giugliano ITA Althea Racing RSV4 +12.508s
7. Jules Cluzel FRA Fixi Crescent Suzuki +17.330s
8. Jonathan Rea GBR Pata Honda +17.339s
9. Leon Camier GBR Fixi Crescent Suzuki +19.886s
10. Leon Haslam GBR Pata Honda +19.996s
11. Max Neukirchner GER MR Ducati +27.629s
12. Glenn Allerton AUS Next Gen BMW +42.809s
13. Jamie Stauffer AUS Honda +42.893s
14. Federico Sandi ITA Pedercini Kawasaki +44.899s
15. Alexander Lundh SWE Pedercini Kawasaki +57.824
16. Vittorio Iannuzzo ITA Grillini Dentalmatic BMW +1m 22.574s
17. Chaz Davies GBR BMW GoldBet +2 laps
18. Ivan Clementi ITA HTM Racing BMW 11 laps completed
19. Loris Baz FRA Kawasaki 0 laps completed