Yvan Muller held off RML Chevrolet team-mate Tom Chilton to score his first World Touring Car Championship win on the streets of Porto.
Chevrolet dominated the race, locking out the top four spots once Gabriele Tarquini's Honda dropped out of fourth with a blown turbo on lap eight.
Michel Nykjaer, a three-time winner already this season, was third ahead of Pepe Oriola, who was just half a second shy of collecting a podium in his first race since switching from SEAT to the Cruze.
Rob Huff and James Thompson, meanwhile, had relatively lonely drives to fifth and sixth respectively.
The static order at the front was initially true of the entire field, but changed dramatically in a bizarre and dangerous crash on lap 10.
Tarquini's stricken Honda was already parked at Turn 13, covered by yellows, when a recovery vehicle entered the circuit and wound up just ahead of a massive pack of cars at the preceding Turn 12.
In the ensuing chaos it was hit by Franz Engstler's BMW, while Fredy Barth spun in avoidance while exiting the corner.
Lada's Mikhail Kozlovskiy then did excellently to squeeze through an ever-decreasing gap between Barth's BMW - now sideways across the track - and the aftermath of Englster's collision with the recovery car.
The safety car was called, and after two laps ducked back in, leading to a final-lap shootout.
Once more the order at the front remained unchanged, but there was drama further back as Tom Coronel - racing after following threats to skip the weekend by missing warm-up - finally fought his way past Marc Basseng following race long pressure in what was a battle for seventh.
Basseng was hung out to dry and also lost out to Stefano D'Aste and local favourite Tiago Monteiro, dropping to 10th at the flag.
Tom Boardman also lost out on the final lap, sliding into the wall after tangling with Darryl O'Young in a fight for 12th.
Results - 12 laps: Pos Driver Team/Car Time/Gap 1. Yvan Muller RML Chevrolet 27m38.637s 2. Tom Chilton RML Chevrolet + 0.343s 3. Michel Nykjaer Nika Chevrolet + 0.665s 4. Pepe Oriola Tuenti Chevrolet + 1.318s 5. Rob Huff Munnich SEAT + 2.493s 6. James Thompson Lada + 3.662s 7. Tom Coronel ROAL BMW + 6.333s 8. Stefano D'Aste PB BMW + 6.416s 9. Tiago Monteiro Honda + 6.977s 10. Marc Basseng Munnich SEAT + 7.576s 11. James Nash Bamboo Chevrolet + 10.632s 12. Darryl O'Young ROAL BMW + 11.014s 13. Hugo Valente Campos SEAT + 11.485s 14. Alex MacDowall Bamboo Chevrolet + 11.953s 15. Charles Ng Engstler BMW + 12.291s 16. Fernando Monje Campos SEAT + 12.842s 17. Nikolay Karamishev Campos SEAT + 13.234s 18. Fredy Barth Wiechers BMW + 13.736s 19. Mikhail Kozlovskiy Lada + 33.630s 20. Tom Boardman Special Tuning SEAT + 1 lap 21. Franz Engstler Engstler BMW + 3 laps Retirements: Rene Munnich Munnich SEAT 8 laps Gabriele Tarquini Honda 7 laps Mehdi Bennani Proteam BMW 3 laps Norbert Michelisz Zengo Honda 1 lap