Jules Bianchi sustained race-long pressure from Alexander Sims to take his seventh Formula 3 Euro Series victory of the season at Barcelona.
The championship leader led the race from start to finish for ART, with his biggest challenge coming when Mucke driver Sims attacked him around the outside of the first corner of the opening lap.
After that, the British driver was often able to close the gap to less than a second, but he was never able to get close enough to mount another attack.
Behind the top two, Andrea Calderelli took his first podium finish in the series. The Italian appeared set to drop back having made a poor start from the front row, but he emerged from the first corner in third after several incidents shuffled the pack considerably.
The SG Formula driver ran with the leaders for most of the race, but in the closing stages he fell back into the clutches of ART's Valtteri Bottas, who could not quite get close enough to attempt a pass.
Behind Bottas, Henkie Waldschmidt completed a good day for SG with fifth place, while Christian Vietoris's slim title hopes took another dent as he could only manage sixth place for Mucke.
The German was one of several drivers to have his first lap hindered by the chaos at Turn 1, as he made heavy contact with team-mate Sam Bird just ahead of the other clashes that eliminated several drivers.
The scrap for the front row for Sunday's reversed-grid race provided some interest behind Vietoris at least, with Basil Shaaban (Prema), series returnee Renger van der Zande (Motopark) and Adrien Tambay (ART) fighting for the two spots on the front tow.
Shaaban survived several attacks from van der Zande, who then dropped back slightly as Tambay closed in. The French driver then dived down the inside of the British F3 race winner at Turn 1, but despite van der Zande just about giving him room, he spun as he tried to turn in.
That left Shaaban, who came up from 18th on the grid after avoiding the first lap carnage, safe in seventh, taking his first points in the Euro Series.
Pos Driver Team Car Time/Gap 1. Jules Bianchi ART D/M 30m22.894s 2. Alexander Sims Mucke D/M + 1.071s 3. Andrea Caldarelli SG D/M + 3.212s 4. Valtteri Bottas ART D/M + 3.877s 5. Henkie Waldschmidt SG D/M + 5.560s 6. Christian Vietoris Mucke D/M + 9.938s 7. Basil Shaaban Prema D/M + 20.138s 8. Renger van der Zande Motopark D/M + 20.954s 9. Roberto Merhi Manor D/M + 24.852s 10. Mika Mäki Signature D/V + 28.165s 11. Tiago Geronimi Signature D/V + 31.231s 12. Tim Sandtler Prema D/M + 36.757s 13. Johan Jokinen Kolles & Heinz D/V + 41.065s 14. Christopher Zanella Motopark D/M + 41.469s 15. Pedro Enrique Manor D/M + 42.913s 16. Carlo Van Dam SG D/M + 43.784s 17. Adrien Tambay ART D/M + 44.848s 18. Marco Wittmann Mucke D/M + 1m06.007s Retirements: Jake Rosenzweig Carlin D/V 15 laps Esteban Gutierrez ART D/M 12 laps Cesar Ramos Manor D/M 11 laps Sam Bird Mucke D/M 1 lap Stefano Coletti Prema D/M 0 laps Jean Karl Vernay Signature D/V 0 laps Nick Tandy Kolles & Heinz D/V 0 laps