Wolves goalkeeper Carl Ikeme gifted the visitors the lead after 27 minutes, spilling a cross for Maikel Kieftenbeld to fire into an empty net.
Only five minutes later, Birmingham doubled their lead when midfielder David Davis - who made 61 appearances for Wolves between 2009 and 2014 - side-footed into the far corner for 2-0.
Paul Robinson's straight red card for a tangle with Jon Dadi Bödvarsson reduced Birmingham to 10 men just seven minutes into the second-half, handing Wolves the momentum.
And they pulled a goal back through half-time substitute Nouha Dicko on 73 minutes, the striker applying the finishing touch to Helder Costa's low cross for his first goal since the final day of the 2014-15 season.
That meant Birmingham had to survive plenty of late pressure in a tense last 15 minutes, but they did just that to claim only their second win in 15 games in all competitions under Zola, and earn their first Molineux victory since November 2009.
The win lifts Birmingham 13 points above the drop zone in 13th while Wolves drop to 20th, with a five point cushion protecting them from the bottom three, while they also have two games in hand.
Wolves make only one change as Blues welcome back midfield duo
Wolves' head coach Paul Lambert made just the one change from the FA Cup defeat to Chelsea a week ago, Richard Stearman returning in central defence in place of Kortney Hause.
Nouha Dicko returned to the bench from a hamstring problem, while Mike Williamson also made his way back into the squad, but Connor Ronan was absent after being ruled out for the rest of the season with a stress fracture in his back.
Birmingham boss Zola meanwhile made three changes, welcoming ex-Wolves midfielder David Davis and Craig Gardner, previously of West Bromwich Albion and Aston Villa, back from two-match and one-match suspensions.
Lukas Jutkiewicz - having scored six of the 10 goals in 14 games under Zola - was kept out with a hamstring injury but Paul Robinson replaced the injured Jonathan Grounds, while Cheick Keita kept his place despite suffering a head injury in their heavy home defeat to Queens Park Rangers.
Carl Ikeme error hands Birmingham surprise lead
Wolves saw more of the ball across a cagey opening 20 minutes and built the better moves, but had little meaningful action in the final third with their end product found wanting.
Their only real effort saw Tomasz Kuszczak comfortably gather Matt Doherty's deflected effort after Birmingham failed to clear their lines from a free-kick, while Emilio Nsue had a half-volley from Che Adam's cross deflected wide up the other end.
Having proven a crux for Birmingham this season, they almost conceded from another set-piece this season on 25 minutes when Stearman rose highest at the back post at a corner only for his header across to narrowly evade Dave Edwards.
But almost immediately up the other end, Birmingham stole the lead against the run of play - going ahead for only the second time under Zola.
Gardner found the space down the right to swing in a cross that Carl Ikeme couldn't deal with, spilling into the path of Kieftenbeld who only needed to stab into an empty net to hand the Blues the lead.
That stirred both sides and George Saville soon saw a low 25-yard drive deflected just wide after being left with time to shoot.
Davis doubles Birmingham advantage against old club
But Birmingham doubled their lead by the 31st minute, Davis scoring against his old side as the club scored twice in one game for only the second time under Zola with just their second shot on target.
Adams' low ball inside from the right fell kindly for Davis to curl a side-footed effort first-time beyond Ikeme and into the far corner, before ignoring his previous ties to celebrate in front of a seething South Bank.
Wolves' attempts to muster a response before the break were in vain, Bödvarsson mistiming his jump to head Jack Price's by-line free-kick well over Kuszczak's crossbar despite being left free.
Birmingham continued to gift the home side free-kicks from wide positions but Price's deliveries meant they were often wasted, even when Kuszczak appeared unconvincing when asked to collect one cross.
Ryan Shotton did well to block Doherty's strike before as Birmingham protected their two-goal margin into the break, with Wolves' first-half display greeted by boos from the frustrated home fans - facing witnessing their fifth successive home defeat.
Visitors brought down to 10 with Robinson dismissed
Lambert looked to the returning Dicko from the bench at half-time, replacing Saville, as he looked to inject some much-needed quality up top for Wolves - who were without a shot on target in the first 45.
They started brightly but Shotton again produced a vital interception to deny Andi Weimann a shooting opportunity after Dacres-Cogley had failed to deal with a bouncing ball on the counter and the winger sped forward and looked to cut inside and test Kuszczak.
Birmingham were dealt a huge blow on 52 minutes when skipper Robinson was sent off on his 750th career appearance after a coming-together with Bödvarsson, with Gardner then replaced by loanee Krystian Bielik as Zola switched his system.
Yet Birmingham looked the likelier team of scoring the next goal around the hour mark, Doherty getting across well to block Keita's shot after Nsue found the full-back in space inside the area.
Dicko pulls one back for Wolves to set up tense late barrage
Wolves poured increasing numbers forward, leaving only Stearman and captain Danny Batth inside their own half, as they looked to summon a response but Dicko headed straight at Kuszczak from a couple of yards out when flicking Costa's cross either side of the 'keeper would have halved the deficit.
Birmingham held strong with everyone bar Adams defending deep, Zola unable to call upon a defender on the bench with only midfield and forward options available.
Lambert's Wolves continued to knock on the door, nobody reacting to Conor Coady's low cross down the right before Kuszczak claimed a looping loose ball that bounced off Batth in the six-yard box following a corner.
Yet Wolves finally earned reward for their pressure when Dicko turned in from Costa's low cross from the left, rousing the South Bank and preparing them for a bombardment in the final quarter-of-an-hour.
That was exactly what followed and Wolves somehow failed to turn in Price's free-kick across goal, Doherty just unable to meet a flick-on at the back post.
Chances continued to come and go late on, Doherty heading over the crossbar deep into stoppage-time, while the hosts were claiming for a penalty when Weimann was brought down.
But nothing was given and Wolves succumbed to a fourth straight defeat for the first time since December 2014 as Birmingham claimed a much-needed three points.