Upson rose highest to head Gary McSheffrey's pin-point cross beyond Royce to give the Blues the lead.
Paul Furlong set up Lee Cook and the winger sent his shot arrowing into the top corner to draw the Hoops level.
But Substitute Jerome despatched McSheffrey's pass into the bottom corner from 12 yards to seal the win.
QPR boss John Gregory:
"I was a just a bit disappointed as we did enough in the game to have earned a point.
"But this is a tough place to come to as there is a tremendous amount of
strength in their side. Everyone is on the front foot at Birmingham and everyone
is very positive.
"I don't think we have too many complaints and Cook's goal was outstanding.
But to be fair he doesn't score enough goals for a player of his talent."
Birmingham: Maik Taylor, Kelly, Jaidi, Upson (Larsson 89), Sadler, Johnson, Nafti, Clemence, McSheffrey, Bendtner, Campbell (Jerome 59), Jerome (Muamba 90).
Subs Not Used: Doyle, Danns.
Booked: Bendtner.
Goals: Upson 22, Jerome 62.
QPR: Royce, Bignot, Mancienne, Rehman, Stewart, Milanese (Rowlands 75), Bircham (Bailey 59), Smith, Cook, Furlong, Blackstock (Ray Jones 81).
Subs Not Used: Cole, Ward.
Booked: Milanese.
Goals: Cook 31.
Att: 29,431.
Ref: K Friend (Leicestershire).