Charles Pic led Giedo van der Garde home for an Addax one-two in the first GP2 race of the weekend at Barcelona.
The Frenchman ran third early on as van der Garde led from pole with Sam Bird (iSport) close behind. But Pic got the jump on both of those ahead of him in the pitstops, where he came in one lap after Bird and one lap before his team-mate, and changed only two tyres while his rivals swapped all four.
Van der Garde was also slow away from his stop, and that proved to be the difference as Pic only just beat him to the apex of Turn 1.
From there, Pic had the race under control, and even a late-race safety car did not give van der Garde a chance to attack.
Bird took the final step on the podium behind the Addax cars, while DAMS' Romain Grosjean came home fourth after a very quiet race where he never quite had enough to match the top three.
Davide Valsecchi (AirAsia) took advantage of being one of the first leaders to pit to retake fifth place, which he had lost at the start when he made a very slow getaway and dropped to eighth.
Marcus Ericsson and Dani Clos were next up. The pair had disputed their position when the safety car was called out on the opening lap, and as Clos tried to let Ericsson through just before the restart it allowed the top four to pull away by four seconds.
The Spaniard eventually let Ericsson through a lap later, and he was never able to regain the position from there.
ART's Jules Bianchi recovered from his 10-place grid penalty to climb from 11th to eighth, earning the final point and pole position for Sunday's reversed-grid race.
The Frenchman spent a long time in the midfield after he lost ground avoiding a startline crash between Luiz Razia and Luca Filippi, but he put moves on Michael Herck and Stefano Coletti at Turn 1 late in the race to grab eighth.
Results - 34 laps: Pos Driver Team Time/Gap 1. Charles Pic Addax 1h00m32.817s 2. Giedo van der Garde Addax + 1.444s 3. Sam Bird iSport + 2.773s 4. Romain Grosjean DAMS + 7.958s 5. Davide Valsecchi AirAsia + 10.011s 6. Marcus Ericsson iSport + 10.518s 7. Dani Clos Racing Engineering + 16.534s 8. Jules Bianchi ART + 16.979s 9. Fabio Leimer Rapax + 17.419s 10. Josef Kral Arden + 21.726s 11. Stefano Coletti Trident + 24.492s 12. Alvaro Parente Racing Engineering + 24.715s 13. Max Chilton Carlin + 25.349s 14. Fairuz Fauzy Super Nova + 25.841s 15. Johnny Cecotto Ocean + 28.469s 16. Pal Varhaug DAMS + 35.890s 17. Mikhail Aleshin Carlin + 37.837s 18. Julian Leal Rapax + 38.135s 19. Jolyon Palmer Arden + 38.723s 20. Kevin Ceccon Coloni + 39.033s 21. Rodolfo Gonzalez Trident + 41.999s 22. Kevin Mirocha Ocean + 1 lap Retirements: Michael Herck Coloni 21 laps Esteban Gutierrez ART 21 laps Luiz Razia AirAsia 11 laps Luca Filippi Super Nova 0 laps