Antonio Felix da Costa completed a dominant Formula Renault 3.5 double at Barcelona, while Robin Frijns sealed the title after a collision with championship rival Jules Bianchi.
While da Costa sprinted away after passing polesitter Mikhail Aleshin at the start, Frijns and Bianchi slotted into third and fifth positions respectively.
They were then nose-to-tail after pitting together, with early fourth place man Arthur Pic dropping back in the stops.
Both title contenders were jumped by a late-stopping Aaro Vainio, who scrapped with RFR team-mate Aleshin for second for the rest of the race.
Behind them, Bianchi sat in Frijns' wheel tracks for several laps, before diving down the inside into Turn 1 on lap 21.
Frijns responded seconds later with a lunge of his own into Turn 4. They collided, with Bianchi sliding into the gravel and out of the race.
From there Frijns ran sixth after losing places in the scuffle to Kevin Magnussen and Alexander Rossi.
A recovering Pic passed him on the penultimate lap, but with Bianchi out and Sam Bird behind him, Frijns was safe to come home seventh and take the title, subject to an investigation by the stewards.
Up front, da Costa won for Arden Caterham by 27 seconds in the end, while Aleshin held on in a fierce scrap with Vainio to secure a double podium for RFR in its last FR3.5 race.
Results - 29 laps: Pos Driver Team Time/Gap 1. Antonio Felix da Costa Arden Caterham 46m06.997s 2. Mikhail Aleshin RFR + 27.856s 3. Aaro Vainio RFR + 28.689s 4. Kevin Magnussen Carlin + 29.398s 5. Alexander Rossi Arden Caterham + 29.919s 6. Arthur Pic DAMS + 32.398s 7. Robin Frijns Fortec + 33.293s 8. Sam Bird ISR + 34.088s 9. Andre Negrao Draco + 36.224s 10. Will Stevens Carlin + 40.049s 11. Walter Grubmuller P1 + 42.532s 12. Jake Rosenzweig ISR + 43.998s 13. Tamas Pal Kiss BVM Target + 44.714s 14. Nick Yelloly Comtec + 54.282s 15. Nico Muller Draco + 1m05.300s 16. Daniil Move P1 + 1m31.146s 17. Kevin Korjus Lotus + 1m31.336s 18. Carlos Huertas Fortec + 1m33.132s 19. Vittorio Ghirelli Comtec + 1m46.192s 20. Nikolay Martsenko BVM Target + 1m46.429s 21. Yann Cunha Pons + 1m58.682s 22. Zoel Amberg Pons + 1 lap Retirements: Lucas Foresti DAMS 25 laps Jules Bianchi Tech 1 20 laps Daniel Abt Tech 1 8 laps Marco Sorensen Lotus 2 laps