Birmingham secured an FA Cup fourth-round trip to Sheffield United as Wade Elliott's late goal helped beat Wolves.
The visitors had the best first-half chance of the replay at Molineux, Adam Rooney hesitating when clean through.
But a prostrate Elliott scythed in the winner from three yards after his initial effort came back off a post.
Substitute Steven Fletcher almost took the game into extra-time but his shot was smothered by Colin Doyle, who then tipped Stephen Hunt's rebound over.
Much was made of the lack of quality in the first match between the teams , played on a pudding of a pitch at St Andrew's 11 days ago before a sparse crowd of 14,594.
There were many empty old gold seats at Molineux and numerous changes on both sides, but Birmingham's vociferous travelling contingent ensured a lively atmosphere.
However, despite a far better playing surface the majority of the action on the field was less than inspired once again.
Led Zeppelin maestro Robert Plant flew in from Texas especially for the match but found his beloved Wolves were not in the mood for long periods.
DID YOU KNOW?
Wolves are the only Premier League team to be eliminated by Championship opposition in this year's FA Cup third round
Christophe Berra, the only Wolves player to remain from Saturday's starting line-up in the 1-1 draw with Tottenham, made a key interception to clear David Murphy's cross as Birmingham started positively.
Adam Hammill provided some of the better moments for the home side down the right flank, and his fine early cross was met by Sylvan Ebanks-Blake, but under pressure the burly striker headed wide from inside the six-yard box.
Hammill flashed another dangerous ball across the face of goal ahead of his team-mates, but even when Birmingham were briefly down to nine men following a clash of heads between Murphy and Jean Beausejour, Wolves could not provide a cutting edge.
Indeed it was the visitors, while still reduced to 10 men as Beausejour's treatment continued, who had the best chance of the half when Rooney raced clean through, only to take too long and allow George Elokobi to make a muscular challenge.
Curtis Davies forced Dorus De Vries into a low save to his left with a flick-on from Jordon Mutch's long free-kick, and Jonathan Spector's long-range drive from the right side fizzed inches wide of the left-hand post.
Birmingham, playing their 36th match of the season, continued to have the better of things in the early stages of the second-half, and Mutch tested De Vries with a low drive from 25 yards.
With such a lack of potency going forward, Wolves brought on their leading scorer Fletcher, who netted the opening goal at Spurs, with 20 minutes remaining.
Wolves boss Mick McCarthy
“I am very disappointed, angry, and the game hinged on us not marking from a corner so I'm disappointed with that”
Yet the chances continued at the other end, Beausejour's left-wing cross turned fractionally wide of his own post by Elokobi, and from the resulting corner the Blues were in front.
Elliott might have done better when he turned to meet the loose ball from close range, but his determination was evident as he forced home the rebound.
Fletcher looked set to save his team but was bravely met by Doyle as he slid in with his trademark left foot from inside the six-yard box.
Just as he had done late on in the first match, the Birmingham goalkeeper Doyle completed a fine double save, springing to his feet to keep out Hunt's volleyed follow-up, as the Blues earned a visit to Bramall Lane on 28 January.
Wolves boss Mick McCarthy: "I am very disappointed, angry, and the game hinged on us not marking from a corner so I'm disappointed with that.
"I've loads of complaints, not with them but with us for not being good enough on the night. I've said my piece in the dressing room.
"I know winning games creates that winning mentality and I didn't want to lose tonight. I'm bitterly disappointed, I didn't want to lose. I'm angry about that.
"Yes, there are a lot of changes, some enforced, some my decision, but they are all Premier League players and the best of them was Matt Doherty, the one kid on the pitch.
"I know what they can all do individually but collectively they've not done it as well as we could have done. I'm livid we've gone out."
Birmingham boss Chris Hughton: "It was a satisfying result. Wolves made more changes than us but to come here and win was excellent.
"We had to defend very well at times and our two centre-halves Curtis Davies and Steven Caldwell were excellent and we needed them.
"But I thought we showed enough on the ball to be a real threat at times and in the end we just deserved it."
Sorry, we were unable to load match stats, please try again.
Live Text Commentary
Full Time The final whistle is blown by the referee.89:58
The assistant referee flags for offside against Richard Stearman. Indirect free kick taken by Colin Doyle.89:18 Substitution
Substitution Keith Fahey on for Morgaro Gomis.88:15
Steven Fletcher takes a shot. Save made by Colin Doyle. Stephen Hunt takes a shot. Save by Colin Doyle. Corner from left by-line taken by Nenad Milijas.85:47
Direct free kick taken by Colin Doyle.85:47 Booking
Booking Christophe Berra receives a caution for unsporting behaviour.85:36
Christophe Berra challenges Jean Beausejour unfairly and gives away a free kick.84:22
Jean Beausejour takes a shot. Save by Dorus De Vries. Outswinging corner taken right-footed by Jordon Mutch, Steven Caldwell concedes a free kick for a foul on Richard Stearman. Free kick taken by Dorus De Vries.83:16
Unfair challenge on Chris Burke by George Elokobi results in a free kick. Jonathan Spector takes the free kick.81:58
Colin Doyle takes the indirect free kick.81:58 Substitution
Substitution Stephen Ward joins the action as a substitute, replacing Matt Doherty.81:58
The official flags Sylvan Ebanks-Blake offside.80:35
Steven Fletcher is ruled offside. Colin Doyle restarts play with the free kick.75:55 Substitution
Substitution Chris Burke replaces Nathan Redmond.73:22 Goal scored
Goal! - Wade Elliott - Wolves 0 - 1 Birmingham Wade Elliott fires in a goal from close range to the bottom right corner of the goal. Wolverhampton 0-1 Birmingham.72:43
Outswinging corner taken by Jordon Mutch, Wade Elliott produces a right-footed shot from inside the box and strikes the post.71:17 Substitution
Substitution Steven Fletcher is brought on as a substitute for Kevin Doyle.70:02
The offside flag is raised against Sylvan Ebanks-Blake. Colin Doyle takes the free kick.68:23
Adlene Guedioura produces a right-footed shot from just outside the box that goes wide right of the target.66:35
Kevin Doyle takes the free kick. Sylvan Ebanks-Blake concedes a free kick for a foul on Curtis Davies. Free kick taken by Curtis Davies.
Substitution Adlene Guedioura joins the action as a substitute, replacing Eggert Jonsson.66:35
Free kick awarded for an unfair challenge on Christophe Berra by Adam Rooney.66:08
Wade Elliott takes a shot. Dorus De Vries makes a save.64:25
Adam Hammill takes a shot. Save by Colin Doyle.60:03
The referee blows for offside against Nenad Milijas. Indirect free kick taken by Colin Doyle.57:58
Matt Doherty takes a shot. Colin Doyle makes a save.55:34
Jonathan Spector fouled by George Elokobi, the ref awards a free kick. David Murphy takes the direct free kick.54:29
Stephen Hunt takes a shot. Save made by Colin Doyle.52:59
Stephen Hunt gives away a free kick for an unfair challenge on Jonathan Spector. Free kick taken by Jordon Mutch.51:47
Sylvan Ebanks-Blake challenges Curtis Davies unfairly and gives away a free kick. Free kick taken by Curtis Davies.51:21
Eggert Jonsson fouled by Morgaro Gomis, the ref awards a free kick. Free kick taken by Nenad Milijas.49:47
Kevin Doyle takes a shot. Steven Caldwell gets a block in.45:01
The referee gets the second half underway.45:00 +3:11 Half time
Half Time The half-time whistle blows.45:00 +1:28
Effort from outside the penalty area by Jonathan Spector goes wide left of the target.43:32
Free kick awarded for an unfair challenge on Kevin Doyle by Curtis Davies. Nenad Milijas produces a strike on goal direct from the free kick, save made by Colin Doyle.42:28
Adam Rooney gives away a free kick for an unfair challenge on Christophe Berra. Direct free kick taken by Dorus De Vries.41:21
Curtis Davies takes a shot. Save by Dorus De Vries. Jordon Mutch takes the outswinging corner, clearance made by Richard Stearman.40:48
Free kick awarded for an unfair challenge on Jean Beausejour by Matt Doherty. Direct free kick taken by Jordon Mutch.40:06
David Murphy gives away a free kick for an unfair challenge on Kevin Doyle. Direct free kick taken by Stephen Hunt.39:24
Sylvan Ebanks-Blake gives away a free kick for an unfair challenge on Morgaro Gomis. Jordon Mutch restarts play with the free kick.36:07
Morgaro Gomis challenges Adam Hammill unfairly and gives away a free kick. Free kick taken by Matt Doherty.33:18
The referee blows for offside. Colin Doyle restarts play with the free kick.25:07
Stephen Hunt decides to take the corner short. The assistant referee flags for offside against Richard Stearman. Colin Doyle takes the indirect free kick.22:13
Unfair challenge on Adam Rooney by Matt Doherty results in a free kick. David Murphy takes the direct free kick.21:20
Outswinging corner taken from the right by-line by Jordon Mutch, comfortable save by Dorus De Vries.15:26
Adam Rooney gives away a free kick for an unfair challenge on Matt Doherty. Free kick taken by Matt Doherty.14:46
Nenad Milijas has an effort at goal from just outside the box which goes wide of the left-hand upright.12:53
Nathan Redmond produces a right-footed shot from just outside the area that goes wide left of the goal.10:05
Outswinging corner taken right-footed by Adam Hammill played to the near post, clearance made by Jordon Mutch.8:36
Headed effort from close range by Sylvan Ebanks-Blake goes wide left of the goal.7:22
Stephen Hunt challenges Jordon Mutch unfairly and gives away a free kick. Jordon Mutch takes the direct free kick.6:11
Sylvan Ebanks-Blake takes a shot. Comfortable save by Colin Doyle.0:39
Morgaro Gomis is adjudged to have handled the ball. Direct free kick taken by Stephen Hunt.0:00
The game gets underway.
Live data and text provided by our data suppliers