Romain Grosjean capitalised on a Jules Bianchi error with just over a lap remaining to steal victory in the second GP2 race at the Nurburgring.
The French pair were involved in a three-way dice, which included race one winner Luca Filippi, in the final laps of a race that had started wet but dried out.
Once everyone had switched to slicks, Bianchi enjoyed a slender lead over his pursuers. Grosjean had only launched one attack - four laps from the end - into Turn 1, but Bianchi had re-passed him on the exit and seemed to just about have things under control.
But the Ferrari junior driver then locked up at the final chicane on the penultimate lap, running wide and enabling Grosjean to get a run on him into the final corner.
Filippi then challenged Bianchi into Turn 1, but the Italian clattered into the side of the ART car and spun. Both cars were undamaged, and they held onto their podium places.
Behind them Christian Vietoris took fourth, while Adam Carroll sustained pressure from Marcus Ericsson to take fifth. Ericsson spun at Turn 2 on the final lap, handing the final point to Max Chilton.
Chilton just kept pole-sitter Sam Bird at bay to the chequered flag. The Briton had led the opening lap, but he spun at Turn 10 on lap two, handing the lead to Bianchi.
The Frenchman had already benefitted from some of the other leaders hitting trouble, as Dani Clos and Giedo van der Garde clashed at Turn 5 on the opening lap while fighting over second.
The battle for the lead should have featured Esteban Gutierrez as well, as the Mexican was fighting hard with Grosjean in the first half of the race. He got ahead of the eventual winner when they both pitted for slicks, but his race came to an end when he lost a wheel just over a lap later.
Results - 23 laps: Pos Driver Team Time/Gap 1. Romain Grosjean DAMS 45m09.296s 2. Jules Bianchi ART + 1.569s 3. Luca Filippi Coloni + 7.768s 4. Christian Vietoris Racing Engineering + 14.388s 5. Adam Carroll Super Nova + 24.962s 6. Max Chilton Carlin + 42.102s 7. Sam Bird iSport + 42.428s 8. Fabio Leimer Rapax + 45.561s 9. Julian Leal Rapax + 59.610s 10. Michael Herck Coloni + 1m04.044s 11. Josef Kral Arden + 1m05.990s 12. Fairuz Fauzy Super Nova + 1m06.370s 13. Kevin Mirocha Ocean + 1m07.101s 14. Luiz Razia AirAsia + 1m07.957s 15. Rodolfo Gonzalez Trident + 1m15.328s 16. Marcus Ericsson iSport + 1 lap 17. Pal Varhaug DAMS + 1 lap Retirements: Charles Pic Addax 20 laps Davide Valsecchi AirAsia 17 laps Jolyon Palmer Arden 17 laps Esteban Gutierrez ART 15 laps Alvaro Parente Carlin 10 laps Johnny Cecotto Ocean 6 laps Stefano Coletti Trident 6 laps Giedo van der Garde Addax 1 lap Dani Clos Racing Engineering 0 laps