Match ends, Birmingham City 2, Queens Park Rangers 1.
Paul Caddis converted a second-half penalty as Birmingham City fought back for a deserved victory against QPR.
Mid-table Rangers, who have announced that ex-boss Neil Warnock is to rejoin as first-team advisor, went ahead via a deflected Matt Phillips strike.
But Paul Robinson's flying header from Demarai Gray's free-kick brought Gary Rowett's Blues level by the interval.
Caddis then hit the winner from the spot after Clayton Donaldson was fouled by Nedum Onuoha to keep Blues fourth.
A decent afternoon's entertainment started on a sad note, with a minute's applause for former Birmingham City player Howard Kendall, who has died at the age of 69.
The Everton legend, who played more than 100 games for Blues during a three-year spell in the 1970s, would have no doubt been impressed by an encouraging start for his former side, with Donaldson and Gray looking dangerous in attack and QPR being forced back.
Gray almost scored with a fine 18-yard drive after some nifty footwork that brought a decent save from away goalkeeper Rob Green, but Rangers held out and went ahead after 17 minutes.
Birmingham were slow to get out of their own area after a corner and, when the ball was eventually played back in, Phillips found the back of the net with a shot that took a deflection to deceive keeper Tomasz Kuszczak.
The Londoners suddenly started to play with confidence but, for the second time in the game, a goal arrived for the side on the back foot.
Veteran defender Robinson, now 36, was the scorer, doing brilliantly to head home Gray's perfectly delivered free-kick for just his second goal in 127 matches for Birmingham.
The hosts went on to dominate after drawing level, looking a constant threat on the break, happy to surrender possession against a QPR team who looked toothless in attack and slow in their build-up.
Donaldson's clever hold-up play, and the pace of Jacques Maghoma and Gray, always looked like creating a third home goal.
Rangers, deprived of injured pair Charlie Austin and Jamie Mackie, did pose some threat in the latter stages with Matt Phillips and Leroy Fer both going close, but Birmingham held on without too much alarm.
Birmingham City manager Gary Rowett:
"We deserved to win and after going a goal down, after losing our previous two home games, that could have put a lot of pressure on the team.
"It is one of the first times we have gone behind and come back to win. We showed a different side to our game and Paul Robinson's equaliser gave us more belief in ourselves."
"It is so hard to control people's expectations. We are joint second on merit. The win must give the players even more confidence after taking on a team which was in the Premier League last season and beat them at home while limiting them to very few opportunities."
Queens Park Rangers manager Chris Ramsey:
"It is always difficult for a relegated club. It is difficult to have a completely new team. I am not making an excuse but, when most of your team come four or five days before the start of the season, the pre-season becomes null and void.
"We are not in a bad position. If we win our next two games all of a sudden things will change. I have confidence in the players and squad and I expect us to be in the top half and pushing for promotion. But at times you have to be patient.
"Managing the expectations are huge at QPR and the brunt of the criticism is going to hit me."
- 31CaddisBooked at 68mins
- 26DavisSubstituted forShinnieat 74'minutes
- 7GraySubstituted forSolomon-Otaborat 87'minutes
- 24PerchBooked at 23mins
- 5OnuohaBooked at 64mins
- 30Guimaraes CordeiroSubstituted forTözsérat 72'minutes
- 10FerSubstituted forLuongoat 71'minutes
- 14Emmanuel-ThomasSubstituted forPolterat 84'minutes
- Carl Boyeson
- Shots on Target
Second Half ends, Birmingham City 2, Queens Park Rangers 1.
Offside, Birmingham City. Andrew Shinnie tries a through ball, but Clayton Donaldson is caught offside.
Hand ball by Clayton Donaldson (Birmingham City).
Foul by Daniel Tözsér (Queens Park Rangers).
Stephen Gleeson (Birmingham City) wins a free kick in the defensive half.
Offside, Birmingham City. Andrew Shinnie tries a through ball, but Jonathan Grounds is caught offside.
Substitution, Birmingham City. Viv Solomon-Otabor replaces Demarai Gray.
Attempt missed. Jacques Maghoma (Birmingham City) right footed shot from the left side of the box is high and wide to the right. Assisted by Clayton Donaldson.
Substitution, Queens Park Rangers. Sebastian Polter replaces Jay Emmanuel-Thomas.
Hand ball by Massimo Luongo (Queens Park Rangers).
Foul by Paul Konchesky (Queens Park Rangers).
Clayton Donaldson (Birmingham City) wins a free kick on the right wing.
Foul by Nedum Onuoha (Queens Park Rangers).
Jonathan Grounds (Birmingham City) wins a free kick in the defensive half.
Attempt missed. Tjaronn Chery (Queens Park Rangers) left footed shot from long range on the right misses to the right. Assisted by James Perch.
Substitution, Birmingham City. Andrew Shinnie replaces David Davis.
Foul by Paul Konchesky (Queens Park Rangers).
Jacques Maghoma (Birmingham City) wins a free kick on the right wing.
Substitution, Queens Park Rangers. Daniel Tözsér replaces Sandro.