Esteban Ocon took an unchallenged win in the second Formula 3 European Championship race of the weekend at Hockenheim.
The Prema driver did not win by a huge margin, just 0.9 seconds separating he and second-placed Antonio Giovinazzi at the finish. However it was a measured victory, Ocon leading every lap of the race.
Even a late safety car, caused by a Michele Beretta spin, could not rattle Ocon, the Lotus Formula 1 junior driver in control as he took his second win of the season.
Giovinazzi finished a comfortable second for Carlin, ahead of a three-way fight for third place.
Initially it was Carlin's Ed Jones who held the final podium spot, but in the second half of the race Lucas Auer and Tom Blomqvist started to hunt him down.
The battle became even more heated over the three-lap sprint to the flag after the safety car period, with Auer making a big play for third at the restart. But Jones did enough to hang and take his second podium finish of the weekend.
Auer and Blomqvist finished fourth and fifth respectively, a particularly impressive result for the latter, who started 11th after receiving a 10-place grid penalty for changing engines before qualifying on Saturday.
There was another scrap behind the top five, Prema's Nicholas Latifi coming out on top of the fight for sixth place, ahead of Felix Rosenqvist and Felix Serralles.
Brits Jordan King and Jake Dennis, both from Carlin, rounded out the top 10.
It was a tough race for rookie sensations Max Verstappen and Antonio Fuoco.
Verstappen did not even make the start of the race, the polesitter retiring on his way to the grid with a problem, while Fuoco spun on the first lap, spent some time in the pits, and then ultimately retired with a left-rear suspension problem.
Results - 22 laps: Pos Driver Team/Car Time/Gap 1. Esteban Ocon Prema Dallara-Merc 35m24.768s 2. Antonio Giovinazzi Carlin Dallara-VW +0.969s 3. Ed Jones Carlin Dallara-VW +2.387s 4. Lucas Auer Mucke Dallara-Merc +2.836s 5. Tom Blomqvist Carlin Dallara-VW +3.227s 6. Nicholas Latifi Prema Dallara-Merc +4.346s 7. Felix Rosenqvist Mucke Dallara-Merc +5.222s 8. Felix Serralles West-Tec Dallara-Merc +6.183s 9. Jordan King Carlin Dallara-VW +6.962s 10. Jake Dennis Carlin Dallara-VW +8.339s 11. Mitchell Gilbert Fortec Dallara-Merc +8.961s 12. Dennis van de Laar Prema Dallara-Merc +10.309s 13. John Bryant-Meisner Fortec Dallara-Merc +11.112s 14. Felipe Guimaraes Double R Dallara-Merc +11.377s 15. Roy Nissany Mucke Dallara-Merc +12.148s 16. Jules Szymkowiak Van Amersfoort Dallara-VW +12.266s 17. Sandro Zeller Jo Zeller Dallara-Merc +12.522s 18. Riccardo Agostini Eurointernational Dallara-Merc +12.760s 19. Alexander Toril T-Sport Dallara-NBE +12.973s 20. Sean Gelael Carlin Dallara-VW +13.596s 21. Gustavo Menezes Van Amersfoort Dallara-VW +14.723s 22. Tatiana Calderon Jo Zeller Dallara-Merc +14.903s 23. Hector Hurst West-Tec Dallara-Merc +16.410s 24. Spike Goddard T-Sport Dallara-NBE +33.253s Retirements: Michele Beretta Eurointernational Dallara-Merc 17 laps Antonio Fuoco Prema Dallara-Merc 3 laps Max Verstappen Van Amersfoort Dallara-VW 0 laps