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.
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.