Match ends, Wolverhampton Wanderers 1, Birmingham City 2.
Ten-man Birmingham City earned their first away win under Gianfranco Zola as they inflicted a fourth straight league defeat on local rivals Wolves.
Home goalkeeper Carl Ikeme's handling error gifted Maikel Kieftenbeld the opener, before David Davis curled in the Blues' second before half-time.
Nouha Dicko's first league goal since 2015 gave Wolves hope after Blues' Paul Robinson was shown a straight red card.
But the visitors survived late pressure to grab a morale-boosting victory.
Victory ended Birmingham's three-match losing run and delivered Zola a second win from his 15 games in charge, while Wolves slipped to 20th in the table following Burton's draw with Blackburn.
The opener came when Kieftenbeld was in the right place to pounce as Ikeme spilled Craig Gardner's right-wing cross, sliding in to net his first goal of the season.
Former Wolves midfielder Davis' finish for Birmingham's second required far more technical skill, as he curled the ball in first time from the edge of the area as Che Adams' ball was deflected into his path.
Those were the only two shots on target in a first half which saw Wolves twice miss headed chances from set-pieces, but the hosts applied significant pressure after the break.
Robinson was dismissed after he was deemed to have swung an arm at Jon Dadi Bodvarsson, and Dicko - who had not netted in the league since the final day of the 2014-15 campaign - swept in Helder Costa's low cross to halve the deficit.
Wolves went close through Matt Doherty and Birmingham were grateful to substitute Krystian Bielik for two last-ditch challenges in the closing stages.
Wolves boss Paul Lambert: "We know that we are in a fight. You have to realise what you are involved in. We can't keep dominating games and come away with nothing. That has to stop.
"We are a really talented group when we are on song. Sometimes when you go through these things it makes you stronger.
"I think you have to be streetwise. It is not an individual blame game, we win together and lose together. You have to do the right things and we will come through it.
"We are above the line and everyone thinks you are okay. But we are not okay. You have to eat, sleep and drink it to make sure you are never in this position again."
Birmingham manager Gianfranco Zola: "I am delighted because of the win and the performance. We have had tough times. In the second half we played very well. We looked like we were stronger.
"The sending-off could have killed a lot of teams but we showed a lot of character.
"The players are relieved, happy and excited because we have been through a lot of suffering in the last few weeks. It is not easy to pick the players up when there are so many bad results.
"This is a break that they deserve as they work very hard and believe in what we are doing. No-one can question the attitude and the passion that everyone has at this club and we will work even harder as we want this to be the beginning of things."
- 16CoadyBooked at 77mins
- 8SavilleSubstituted forDickoat 45'minutes
- 17Hélder Costa
- 22BödvarssonBooked at 31mins
- 29KuszczakBooked at 88mins
- 25CogleyBooked at 43mins
- 5ShottonBooked at 41mins
- 4RobinsonBooked at 53mins
- 2NsueSubstituted forStewartat 78'minutesBooked at 79mins
- 33KeitaBooked at 50mins
- 12GardnerSubstituted forBielikat 55'minutes
- 21Frei Koyunlu
- Steve Martin
- Shots on Target
Second Half ends, Wolverhampton Wanderers 1, Birmingham City 2.
Attempt missed. Danny Batth (Wolverhampton Wanderers) header from the centre of the box misses to the left. Assisted by Hélder Costa with a cross following a corner.
Corner, Wolverhampton Wanderers. Conceded by Cheick Keita.
Delay over. They are ready to continue.
Delay in match Krystian Bielik (Birmingham City) because of an injury.
Attempt missed. Matt Doherty (Wolverhampton Wanderers) header from the centre of the box is just a bit too high. Assisted by Conor Coady with a cross.
Attempt blocked. Danny Batth (Wolverhampton Wanderers) header from the centre of the box is blocked. Assisted by Jack Price.
David Edwards (Wolverhampton Wanderers) wins a free kick in the attacking half.
Foul by Maikel Kieftenbeld (Birmingham City).
Attempt blocked. Matt Doherty (Wolverhampton Wanderers) right footed shot from the centre of the box is blocked. Assisted by Conor Coady.
Corner, Wolverhampton Wanderers. Conceded by Josh Cogley.
Tomasz Kuszczak (Birmingham City) is shown the yellow card.
Foul by Hélder Costa (Wolverhampton Wanderers).
David Davis (Birmingham City) wins a free kick in the defensive half.
Attempt blocked. David Edwards (Wolverhampton Wanderers) right footed shot from the centre of the box is blocked.
Nouha Dicko (Wolverhampton Wanderers) wins a free kick in the defensive half.
Foul by Maikel Kieftenbeld (Birmingham City).
Attempt missed. Matt Doherty (Wolverhampton Wanderers) header from the centre of the box is close, but misses to the left. Assisted by Jack Price with a cross following a set piece situation.
Hélder Costa (Wolverhampton Wanderers) wins a free kick on the left wing.