Sam Bird won his third GP2 race of the year at Silverstone on Saturday afternoon, beating Stephane Richelmi by 2.4 seconds.
A chaotic race had a wild start, as poleman Marcus Ericsson looked to have made a fine getaway to lead Felipe Nasr, while Bird made a relatively poor launch from second.
But third-placed starter Nasr drew right alongside Ericsson at Village, where Ericsson ran the Brazilian off the track.
They then touched at The Loop as Nasr rejoined, just as Bird repassing third-placed Stefano Coletti, and Bird rocketed from fourth to first.
He then pulled out a decent advantage over Coletti as the pitstop cycle began, but his lead was eroded when he encountered traffic of those running long first stints.
Some brave lunges were required to deal with that, but Bird worked his way through the queue expertly and managed his lead to the finish.
Behind him, there was more chaos, through which Richelmi came out smelling of roses. After running a long first stint, his fresher rubber stood him in good stead in the closing stages. He passed Coletti at Club, which meant the points leader was now prone to a charging Tom Dillmann, who had switched to the softer tyre for the final stint.
After a tremendous battle, Coletti's defence finally wilted when he ran wide at Club, allowing Dillmann through. Fabio Leimer then attacked Coletti, and they collided at The Loop, putting Coletti out.
NEWS UPDATE: Grid penalties for Leimer and Rossi
Jon Lancaster came through to finish fifth, but he - like Leimer - is under investigation from stewards for hitting James Calado into a spin at Brooklands.
Jolyon Palmer raced brilliantly but faded in the closing stages to finish sixth, ahead of Rio Haryanto and Julian Leal. Calado finished ninth, but will be hoping for at least one penalty to be applied to put him in the reversed-grid picture for Sunday's sprint race.
Nasr was forced to retire from a race for the first time this year, while Ericsson was given a stop-go penalty for their early clash over the lead.
Results - 29 laps:
Pos Driver Team Time/Gap
1. Sam Bird Russian Time 51m32.250s
2. Stephane Richelmi DAMS +2.427s
3. Tom Dillmann Russian Time +12.002s
4. Fabio Leimer Racing Engineering +13.888s
5. Jon Lancaster Hilmer +14.382s
6. Jolyon Palmer Carlin +18.762s
7. Rio Haryanto Addax +19.734s
8. Julian Leal Racing Engineering +20.365s
9. James Calado ART +26.626s
10. Alexander Rossi Caterham +30.352s
11. Marcus Eriksson DAMS +32.235s
12. Adrian Quaife-Hobbs MP +32.829s
13. Robin Frijns Hilmer +42.265s
14. Jake Rosenzweig Addax +44.623s
15. Daniel Abt ART +47.519s
16. Rene Binder Lazarus +49.683s
17. Johnny Cecotto Jr Arden +1m00.115s
18. Fabrizio Crestani Lazarus +1m01.120s
19. Mitch Evans Arden +1m03.532s
20. Nathanael Berthon Trident +1m04.152s
21. Stefano Coletti Rapax +1 lap*
22. Daniel de Jong MP +1 lap
23. Sergio Canamasas Caterham +1 lap
24. Simon Trummer Rapax +1 lap
* Not running at finish
Felipe Nasr Carlin 17 laps
Kevin Ceccon Trident 2 laps