There was an element of fortune about the goal, with a curling cross from the right which squeezed in at the far post past goalkeeper Joe Murphy.
The result was a bitter disappointment for Scunthorpe, who plunged deeper into relegation trouble against the team they pipped for the League One title last season.
In a fiercely fought game, both defences were in command with few clear-cut opportunities at either end.
City always looked the more composed side and might have snatched the lead after 32 minutes when skipper Jamie McCombe headed a good chance wide of the far post from a corner by Lee Johnson.
Midfield man Marvin Elliott also had a chance which he ballooned over from close range.
At the opposite end, Scunthorpe struggled to create much as an attacking force and it was the visitors who went close again early in the second half when winger Ivan Sproule dragged an angled shot across the face of the goal and just wide.
Veteran striker Geoff Horsfield worked hard up front for Scunthorpe, but it was substitute Jonathan Forte who came closest to breaking the deadlock.
He let fly from the edge of the box in the 77th minute with a shot that forced the only save of the game from keeper Adriano Basso.
It looked like the game was set to remain a stalemate until Orr popped up with his late winner to give Bristol their sixth away win of the season.
For Scunthorpe though the result was a big blow after a mini revival which had seen them take four points from their last two games.