Jonathan Rea won Race 2 in Portimao on Sunday after title challenger Toprak Razgatlioglu crashed out of the race.
Starting from tenth on the grid, Rea enjoyed a sizzling start, scything through the field all the way up to second by the end of the opening lap.
The Kawasaki rider then needed just seven corners in the second lap to overtake Scott Redding and take the lead.
However, a small mistake due to pressure from Redding and Razgatlioglu saw him slide back to third over a series of corners.
Later Razgatlioglu was heavy on the brakes at Turn 1 and missed the apex altogether, allowing Rea and Redding back through.
Rea would slide past Redding, then Razgatlioglu did the same on lap six. And so began the battle between the two title contenders.
The lead swapped over the next few laps and with Redding eventually giving Razgatlioglu plenty to think about, Rea managed to get some space, allowing him to set the fastest lap of the race on lap 9.
Disaster struck for Razgatlioglu on the next lap, with a mechanical failure sending him sliding across the tarmac at high speed at Turn 15. The riders' championship leader was unscathed, but his bike was badly damaged.
With Rea and Redding almost two seconds apart at the head of the race, the battle for third between Andrea Locatelli, Loris Baz and Alvaro Bautista heated up.
An error from Locatelli saw him slip from third to fifth at Turn 1, then Baz had his mirrors full of Bautista.
While Baz defended superbly for a few laps, he eventually came together with Bautista on the penultimate lap, sending the furious Spaniard into the gravel trap and out of the race.
Rea crossed the line in splendid isolation, reducing Razgatlioglu's lead at the top of the championship to 24 points with two rounds left.
RACE 2 RESULTS
1 Jonathan Rea GBR Kawasaki Racing Team 19 Laps
2 Scott Redding GBR Aruba.It Ducati +5.425s
3 Loris Baz FRA GoEleven Ducati +8.905s
4 Andrea Locatelli ITA PATA Yamaha +12.289s
5 Garrett Gerloff USA GRT Yamaha +13.956s
6 Michael Van Der Mark NED Motorrad BMW WorldSBK Team +15.289s
7 Michael Rinaldi ITA Aruba.It Ducati +20.639s
8 Leon Haslam GBR Team HRC +20.933s
9 Axel Bassani ITA Motocorsa Ducati +26.031s
10 Eugene Laverty IRL Motorrad BMW WorldSBK Team +26.276s
11 Leandro Mercado ARG MIE Honda Racing +31.493s
12 Isaac Vinales SPA Orelac Racing Kawasaki +41.117s
13 Kohta Nozane JPN GRT Yamaha +42.583s
14 Christophe Ponsson FRA Gil Yamaha +48.074s
15 Jonas Folger GER Benovo BMW +51.009s
16 Samuele Cavalieri SPA Barni Ducati +57.467s
17 Alvaro Bautista SPA Team HRC DNF
18 Toprak Razgatlioglu TUR PATA Yamaha DNF
19 Tito Rabat ITA Kawasaki Puccetti DNF
20 Gabrielle Ruiu ITA B-Max Racing Team DNF
21 Lachlan Epis AUS Pedercini Kawasaki DNF
22 Loris Cresson BEL Pedercini Kawasaki DNF
