James Nash made the most of a constantly squabbling pack to cruise to his second World Touring Car victory in the series' second Porto race.
The Briton started from pole, protected his advantage through the first few corners and therein gradually eased away as constant fights broke out behind.
Chief protagonists were the Chevrolets, with Michel Nykjaer, Pepe Oriola, Yvan Muller and Tom Chilton all fighting their way up from the lower reaches of the reverse-grid top 10 starting order.
Of the quartet it was Nykjaer who enjoyed most success, passing Lada's James Thompson and then the SEAT of Marc Basseng - both times at the final chicane - to move into third.
Despite his best efforts he was unable to find a way past defending champion Rob Huff however, with the Briton's staunch defence ensuring he once again finished as the highest non-Chevrolet driver, this time in second.
Huff did overshot the final chicane at mid-distance, a transgression stewards announced they will investigate.
Basseng was able to close back in on Nykjaer as the latter squabbled with Huff, but with two laps to go had to catch a wild slide that allowed Oriola to nip by into fourth.
Thompson was next up in sixth, just ahead of points leader and race one winner Yvan Muller and the ROAL BMW of Tom Coronel.
Muller's RML stablemate Tom Chilton had made an excellent start and worked his way ahead of Oriola through the first few corners, but the Spaniard lunged back down the inside at Turn 16 on the opening lap.
Chilton was forced into avoiding measures that allowed Yvan Muller to also steal past, which in turn compromised the Briton's exit onto the back straight and ended up costing him four places in total. He fought back to finish ninth, ahead of Mehdi Bennani.
Honda missed the points completely, with Tiago Monteiro its best-placed driver in 11th.
A turbo change meant Gabriele Tarquini started from the back of the grid, and he was only able to come through to 20th, while Norbert Michelisz elected not to start at all due to extensive damage suffered in race one.
Results - 11 laps: Pos Driver Team/Car Time/Gap 1. James Nash Bamboo Chevrolet 23m41.247s 2. Rob Huff Munnich SEAT +5.624s 3. Michel Nykjaer Nika Chevrolet +6.012s 4. Pepe Oriola Tuenti Chevrolet +6.368s 5. Marc Basseng Munnich SEAT +7.946s 6. James Thompson Lada +8.683s 7. Yvan Muller RML Chevrolet +9.336s 8. Tom Coronel ROAL BMW +9.805s 9. Tom Chilton RML Chevrolet +10.178s 10. Mehdi Bennani Proteam BMW +10.669s 11. Tiago Monteiro Honda +11.019s 12. Stefano D'Aste PB BMW +11.560s 13. Darryl O'Young ROAL BMW +15.262s 14. Hugo Valente Campos SEAT +23.847s 15. Charles Ng Engstler BMW +30.812s 16. Nikolay Karamishev Campos SEAT +31.836s 17. Alex MacDowall Bamboo Chevrolet +32.306s 18. Franz Engstler Engstler BMW +33.542s 19. Mikhail Kozlovskiy Lada +34.673s 20. Gabriele Tarquini Honda +36.144s Retirements: Fredy Barth Wiechers BMW 9 laps Rene Munnich Munnich SEAT 7 laps Fernando Monje Campos SEAT 4 laps Tom Boardman Special Tuning SEAT DNS Norbert Michelisz Zengo Honda DNS