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.
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
DNF Lucas Foresti - DAMS: 25 laps
DNF Jules Bianchi - Tech 1: 20 laps
DNF Daniel Abt - Tech 1: 8 laps
DNF Marco Sorensen - Lotus: 2 laps