A resurgent Birmingham City claimed their biggest scalp of the season as John Eustace's side battled their way to victory over high-flying Queens Park Rangers.
QPR, second in the Championship and needing to win to go back on top, were done no favours by two of their London neighbours as Blues won with first-half goals from two loan men - Arsenal's American defender Auston Trusty and West Ham midfielder Emmanuel Longelo.
Any hopes that Michael Beale's side might turn it round after the break were then ended with Blues keeper John Ruddy's fine 79th-minute penalty save to deny Lyndon Dykes.
After winning four times in five away games, this was a second straight defeat on the road for QPR, while Blues' third win in five lifts them into the top half.
It looked on the cards right from the moment when, in an already bouncing atmosphere in front of the 19,007 reduced-capacity crowd, Blues stole ahead in only the fourth minute with a freakish but inspired opening goal.
Krystian Bielik redirected the ball back into the box after a left-wing corner broke to him on the edge of the penalty area but, with his back to goal, Trusty showed great awareness to acrobatically deliver the ball back into the six-yard box with a flick of his outstretched right foot, and it looped just out of Rangers keeper Seny Dieng's reach and under the bar.
They were then 2-0 up just before the half-hour mark when, from a sweeping move of first-time passes from Scott Hogan, Hannibal Mejbri and Bielik the ball was delivered out to Longelo wide on the left and the West Ham loan man cut inside, transferred the ball to his right foot and drilled a low shot beyond Dieng to find the bottom right corner.
QPR had their chances, as Ruddy touched Ilias Chair's curling free-kick over and saved from Dykes after former West Brom striker Tyler Roberts' sidefooted effort from the edge of the box had deflected up off Harlee Dean and on to the roof of the net.
But Ruddy saved his best for Dykes 11 minutes from time when Longelo was adjudged to have raised his foot too high on Ethan Laird as he dived low to head the ball - and Tim Robinson awarded a dubious penalty.
Ruddy delivered for Birmingham on the rare occasions in which he was called into actionThe penalty came at a nice height, Ruddy dived to his right to get both hands on it - and that completed a miserable return to the West Midlands for QPR head coach Beale, who also lost two players, Jake Clarke-Salter and Tyler Roberts, to injury in the space of six first-half minutes.
Line-ups
Birmingham
Formation 3-5-2
21Ruddy
28Sanderson12Dean5Trusty
2Colin18Chong31Bielik6Mejbri23Longelo
9Hogan8Deeney
21Ruddy28Sanderson12Dean5TrustyBooked at 35mins2Colin18ChongSubstituted forHallat 81'minutes31BielikBooked at 55mins6MejbriBooked at 7minsSubstituted forBacunaat 54'minutes23LongeloBooked at 78mins9HoganSubstituted forJamesat 88'minutes8DeeneySubstituted forJutkiewiczat 81'minutesSubstitutes
1Etheridge7Bacuna10Jutkiewicz11Graham19James27Bellingham35HallQPR
Formation 4-2-3-1
1Dieng
27Laird26Balogun5Clarke-Salter22Paal
6Johansen15Field
11Roberts10Chair47Iroegbunam
9Dykes
1Dieng27Laird26BalogunBooked at 60mins5Clarke-SalterSubstituted forDickieat 21'minutesBooked at 53mins22Paal6JohansenSubstituted forAmosat 45'minutes15FieldSubstituted forRichardsat 80'minutes11RobertsSubstituted forArmstrongat 27'minutes10Chair47IroegbunamBooked at 70mins9DykesSubstitutes
2Kakay4Dickie8Amos13Archer17Dozzell20Richards30ArmstrongLive Text
Match ends, Birmingham City 2, Queens Park Rangers 0.
Second Half ends, Birmingham City 2, Queens Park Rangers 0.
Taylor Richards (Queens Park Rangers) wins a free kick on the left wing.
Foul by George Hall (Birmingham City).
Corner, Queens Park Rangers. Conceded by Krystian Bielik.
Attempt missed. Taylor Richards (Queens Park Rangers) left footed shot from outside the box misses to the right. Assisted by Tim Iroegbunam.
Attempt missed. Luke Amos (Queens Park Rangers) right footed shot from outside the box is too high.
Attempt missed. Tim Iroegbunam (Queens Park Rangers) left footed shot from the left side of the box is just a bit too high.
Taylor Richards (Queens Park Rangers) wins a free kick on the right wing.
Foul by Auston Trusty (Birmingham City).
Substitution, Birmingham City. Jordan James replaces Scott Hogan.
Taylor Richards (Queens Park Rangers) wins a free kick in the attacking half.
Foul by Juninho Bacuna (Birmingham City).
Kenneth Paal (Queens Park Rangers) wins a free kick in the defensive half.
Foul by Lukas Jutkiewicz (Birmingham City).
Attempt missed. Juninho Bacuna (Birmingham City) right footed shot from outside the box is too high. Assisted by Lukas Jutkiewicz with a headed pass.
Substitution, Birmingham City. George Hall replaces Tahith Chong.
Substitution, Birmingham City. Lukas Jutkiewicz replaces Troy Deeney.
Substitution, Queens Park Rangers. Taylor Richards replaces Sam Field.
Corner, Queens Park Rangers. Conceded by Juninho Bacuna.