Formula 3 Euro Series title favourite Jules Bianchi scored his first win of the season at Lausitz on Saturday.
The Frenchman sat behind his pole-sitting team-mate Valtteri Bottas for the first six laps of the race, before pouncing on the rookie at Turn 1 to make a clean pass.
He slowly extended his lead up to as much as three seconds, before dropping his pace in the last few laps.
Bottas put in a solid performance to complete an ART one-two, keeping Jean-Karl Vernay behind him despite coming under intense pressure from the Signature driver during the middle of the race.
Behind the top three, Brendon Hartley took a strong fourth place for Carlin, after sustaining race-long pressure from Sam Bird.
The majority of the action in the race came behind the top five. Henkie Waldschmidt held sixth place early on, but he was under pressure from Roberto Merhi and Christian Vietoris.
The pair had started on the seventh row of the grid, but came through the first lap carnage (which included top five starters Atte Mustonen and Cesar Ramos stalling on the grid) to be in the hunt for points.
Merhi eventually found a way past Waldschmidt and became one of the fastest drivers on track once he was in clear air, while Vietoris was unable to find a way by.
Eighth place for the German gives him pole position for Sunday's race, although that had looked in doubt at times as Stefano Coletti tried on several occasions to find a way through.
But Coletti's chances of securing a reversed-grid pole position ended when he was given a drive-through penalty for overtaking under yellow flags on the first lap, and he eventually dropped to 15th place.
Pos Driver Team Car Gap 1. Jules Bianchi ART D/M 30m18.861s 2. Valtteri Bottas ART D/M +2.776 3. Jean-Karl Vernay Signature D/V +4.606 4. Brendon Hartley Carlin D/V +5.823 5. Sam Bird Mucke D/M +6.872 6. Roberto Merhi Manor D/M +7.796 7. Henkie Waldschmidt SG D/M +11.833 8. Christian Vietoris Mucke D/M +12.603 9. Tiago Geronimi Signature D/V +15.518 10. Matteo Chinosi Prema D/M +27.559 11. Adrien Tambay ART D/M +28.100 12. Mika Maki Signature D/V +29.179 13. Kevin Mirocha HBR D/M +31.900 14. Christopher Zanella Motopark D/M +33.218 15. Stefano Coletti Prema D/M +35.518 16. Johnny Cecotto Jr HBR D/M +44.426 17. Cesar Ramos Manor D/M +48.292 18. Pedro Henrique Manor D/M +49.350 19. Carlo van Dam Kolles D/V +52.451 20. Basil Shaaban Prema D/M +53.554 21. Jake Rosenzweig Carlin D/V +53.950 22. Marco Wittmann Mucke D/M +56.796 23. Andrea Caldarelli SG D/M +1:11.909 24. Esteban Gutierrez ART D/M +1:13.141 Retirements Alexander Sims Mucke D/M 1 lap Atte Mustonen Motopark D/M 0 laps Alexandre Marsoin SG D/M 0 laps Fastest lap, Coletti 1:18.022