Johnny Cecotto made the most of an eventful GP2 feature race to take a superb victory from 16th on the grid at Barcelona.
The Trident man started on the harder tyre and passed early race leader Jolyon Palmer for the win in the closing stages after pitting for the soft-compound Pirellis.
Palmer, on the hard tyre at the end of the race after pitting early on, was helpless as Cecotto attacked but fought off Felipe Nasr to take second and increase his championship lead.
Poleman Stephane Richelmi was removed from the lead battle before the race had even begun after the first start was aborted at the last-minute due to the stalled ART car of McLaren Formula 1 junior Stoffel Vandoorne, Richelmi then stalled himself as he attempted to get away for another formation lap.
When the race did begin, Stefano Coletti and Mitch Evans challenged either side of Palmer into Turn 1. Coletti, on the outside, attempted to swipe across in front of the other two but tagged the front of Palmer's wing and caused Evans damage as well.
As Coletti pitted with a puncture and Evans also stopped, Palmer assumed control ahead of Nasr. An incident at Turn 10 later round the opening lap eliminated Ferrari protege Raffaelle Marciello, Daniel Abt and Facu Regalia and sparked a safety car.
When that came in Palmer led for two laps before pitting, along with Nasr.
Julian Leal took over the lead but stopped next time around, promoting Cecotto after he made the most of the early melee - plus a stall for Stoffel Vandoorne - to move up from the eighth row of the grid.
Cecotto gradually eased clear of the second-on-the-road Tom Dillmann as Palmer did likewise from Nasr.
When Cecotto finally pitted with seven laps remaining he rejoined just ahead of Nasr and, having rebuffed the Carlin driver's attack through Turns 1 and 2, Palmer held a lead of 2.5s as he crossed the line next time around.
A lap later, though, Cecotto was in front. A stunning opening two sectors put the Venezuelan on the Briton's tail and as Palmer moved right to take the racing line into the chicane Cecotto dived inside into the lead.
Palmer - furious over the team radio with victory taken away from him - was left to fend off Nasr for second (pictured), which he did despite a spirited final-lap effort from the Brazilian.
Leal took fourth having shadowed Nasr for much of the race. Ryo Haryanto held off a train of cars to net fifth, just ahead of Arthur Pic, Rene Binder and Tio Ellinas, with Arden stand-in Dillmann ninth after losing time in the pits as his team hastily repaired a loose engine cover.
Adrian Quaife-Hobbs claimed the final point in 10th, while GP2 debutant Ellinas will start from pole for the reversed-grid sprint race.
NEWS UPDATE: Penalties shake up Sunday grid
Results - 36 laps:
Pos Driver Team Time/Gap
1. Johnny Cecotto Trident 1h00m28.853s
2. Jolyon Palmer DAMS +3.409s
3. Felipe Nasr Carlin +3.750s
4. Julian Leal Carlin +6.128s
5. Rio Haryanto Caterham +15.895s
6. Arthur Pic Campos +16.842s
7. Rene Binder Arden +17.682s
8. Tio Ellinas MP +18.407s
9. Tom Dillmann Arden +20.565s
10. Adrian Quaife-Hobbs Rapax +21.265s
11. Stephane Richelmi DAMS +21.460s
12. Stefano Coletti Racing Engineering +21.847s
13. Artem Markelov Russian Time +22.233s
14. Simon Trummer Rapax +22.804s
15. Stoffel Vandoorne ART +23.397s
16. Mitch Evans Russian Time +23.630s
17. Conor Daly Lazarus +25.415s
18. Sergio Canamasas Trident +42.769s
19. Kimiya Sato Campos +48.653s
20. Takuya Izawa ART +52.965s
Daniel de Jong MP 26 laps
Alexander Rossi Caterham 18 laps
Nathanael Berthon Lazarus 3 laps
Daniel Abt Hilmer 1 lap
Raffaele Marciello Racing Engineering 0 laps
Facu Regalia Hilmer 0 laps