Valtteri Bottas took his maiden GP3 victory in race two at the Nurburgring, leading throughout in wet conditions.
The ART driver put in a storming first lap to go from sixth to the lead in just seven corners. From there, he built a lead of more than five seconds over pole-sitter Tamas Pal Kiss, who held onto second place until lap four when Alexander Sims got through.
Sims, who started 12th, then began to chip away at his former F3 Euro Series team-mate, getting the gap down to under two seconds by lap 12. The championship leader then had a slow lap next time round, which gave Bottas another half a second cushion and enough of a lead to hang on to the end.
Sims spent the final few laps under pressure as well, as former championship leader Nigel Melker hunted him down. The RSC Mucke driver finally launched an attack into the chicane on the final lap, but he aborted and took to the escape road when Sims defended the inside line.
Behind Kiss, Tom Dillmann starred to take fifth place from 22nd on the grid. It was a similar story for the final point-scorer James Calado, who put in an exceptional performance to take sixth.
The Briton had made a flying start along with team-mate Bottas, and was challenging Aaro Vainio for third at the end of the opening lap. But the two made contact, spinning Calado around and dropping him to the back.
The ART driver then charged through the field, finally getting back into the points by passing Nico Muller at the end of the penultimate lap.
Vainio didn't fare so well. The Finn spun just a few corners after his contact with Calado, and he was then given a drive through penalty for causing the collision between the two.
Results - 14 laps:
Pos Driver Team Time/Gap
1. Valtteri Bottas ART 30m25.297s
2. Alexander Sims Status + 1.473s
3. Nigel Melker RSC Mucke + 2.717s
4. Tamas Pal Kiss Tech 1 + 21.550s
5. Tom Dillmann Addax + 24.379s
6. James Calado ART + 32.578s
7. Nico Muller Jenzer + 34.073s
8. Conor Daly Carlin + 39.255s
9. Nick Yelloly Atech CRS + 44.551s
10. Rio Haryanto Manor + 46.898s
11. Vittorio Ghirelli Jenzer + 49.147s
12. Michael Christensen RSC Mucke + 50.967s
13. Aaro Vainio Tech 1 + 51.244s
14. Lewis Williamson MW Arden + 54.054s
15. Maxim Zimin Jenzer + 56.964s
16. Simon Trummer MW Arden + 59.224s
17. Gabby Chaves Addax + 1m00.668s
18. Ivan Lukashevich Status + 1m03.961s
19. Leonardo Cordeiro Carlin + 1m11.060s
20. Zoel Amberg Atech CRS + 1m18.562s
21. Callum MacLeod Carlin + 1m18.647s
22. Mitch Evans MW Arden + 1m42.208s
23. Matias Laine Manor + 2m04.432s
24. Thomas Hylkema Tech 1 + 1 lap
25. Luciano Bacheta RSC Mucke + 1 lap
Pedro Nunes ART 11 laps
Antonio Felix da Costa Status 7 laps
Adrian Quaife-Hobbs Manor 5 laps
Dean Smith Addax 1 lap
Marlon Stockinger Atech CRS 0 laps