City’s victory came courtesy of successful spot-kicks from Kevin De Bruyne, Yaya Toure, Leroy Sane and Sergio Aguero on a tense night at the Etihad Stadium – but it was Blues goalkeeper Claudio Bravo who emerged as the hero.
The Chilean kept City in it by saving three one-on-ones in normal time and then two more in the shoot-out as City go into the hat for Thursday’s fifth round draw.
City have blown teams away here on a consistent basis, scoring 25 goals from seven home matches this season.
Not so Wolves, who defended like their lives depended upon it, and executed an admirable, if ultimately unsuccessful, gameplan.
It was the Championship side that forced the best three chances in normal play, but Bravo thwarted Bright Enobakhare (twice) and Helder Costa.
Eventually penalties settled it, and perhaps summoning up memories of the dramatic 2016 final spot-kick triumph in this competition, City coolly finished the job.
The game started at a lively pace - following unscheduled pre-match entertainment involving a rogue squirrel’s attempts to evade a succession of City stewards – with Aguero desperate to get the goal that would make him the Club's all-time leading scorer.
His first effort was a driven shot, parried by Will Norris in the Wolves goal, before the Argentinian dragged a good chance wide from Raheem Sterling’s centre.
The pattern of the game had been set with City dominating possession and Wolves sitting in and looking to strike on the counter.
The personnel may have been different – Guardiola made nine changes from the side that beat Burnley – but the footballing philosophy remained the same.
After Aguero thumped a half-volley over, Bravo had to be out smartly to cut out a throughball from the lively Enobakhare.
Bernardo Silva, tipped by many as the long-term successor to David Silva’s central playmaker role, had his chance in that position and impressed with a series of lively runs and touches, while Oleksandr Zinchenko produced a confident display on his full debut from left-back.
Ilkay Gundogan was knitting the play together neatly alongside Yaya Toure from deeper in midfield, but the Blues could not break through a committed and well organised Wolves defence.
The best chance of the half fell to the visitors when Enobakhare forced his way past Eliaquim Mangala, only to be excellently-thwarted by Bravo one-on-one.
The game tightened after the break, with City struggling to find passing rhythm and Wolves’ belief increasing all the time.
Just after the hour they created another one-on-one but again Bravo was equal to it, saving from Helder Costa.
At the other end Aguero came agonisingly close to the record but Norris atoned for a scuffed clearance by saving impressively at the striker’s feet, before the keeper parried Bernardo’s curling effort.
A tenacious double tackle from Adarabioyo denied Enobakhare, before Guardiola threw on in-form De Bruyne for a late push.
But it was Bravo to the rescue again in added time, the Chilean denying Enobakhare again one-on-one.
City continued to pile on the pressure and only remarkable last-ditch defending denied Sterling’s shot.
This was a proper cup tie, with both sides going through the mill physically but continuing to give everything.
So to spot-kicks, with City flawless and Bravo saving from Alfred N’Diaye and Conor Coady to secure City’s passage. Aguero's cheeky chipped effort - which does not count to his all-time tally -applied the finishing touch.
City Matchday app man of the match: Claudio Bravo
The Chilean made three fantastic one-on-one saves to deny Enobakhare and keep City in the tie, before helping to win it in the shoot-out.
Pep Guardiola made nine changes to the side that beat Burnley, with Oleksandr Zinchenko making his full debut in the left-back position. The side set up in a 4-2-3-1 formation, with Ilkay Gundogan and Yaya Toure sitting deeper in midfield behind Bernardo Silva. Raheem Sterling and Gabriel Jesus were wide right and left respectively with Aguero the spearhead. On the bench 18-year-old Lukas Nmecha, fresh from his EDS hat-trick against Derby at the weekend, earned his first senior call up.
City travel to West Brom in the Premier League on Saturday (3pm) before next Wednesday’s trip to Napoli in the Champions League.