City could find no way past a resolute Wanderers defence and, after extra-time, it took a penalty shoot-out to decide the issue with Pep Guardiola’s men coming out on top by 4-1.
And to make it all the more galling, Nuno’s men failed to concede a goal in any of the four ties they played – that’s 420 minutes worth of blank sheets.
The manager kept just two of the team that defeated Preston at the weekend in his starting X1 -Danny Batth and Conor Coady.
Wolves kicked-off defending the end of the ground that housed 6,000 of their supporters. City were soon on the offensive and Sergio Aguero forced a full length save from Will Norris with a well struck effort from 20-yards.
Ben Marshall broke clear on the right flank and he tried to pick out Helder Costa with a low cross that was hooked clear by a defender.
In the tenth minute Aguero fluffed the sort of chance that is his bread and butter when he side footed wide following a low cross from Raheem Sterling.
The Argentinian was a lot closer with his next attempt, a first time shot from outside the box that just cleared the bar.
Bright Enobakhare threaded a pass into the path of Alfred N’Diaye who was just beaten to the ball by home keeper Claudio Bravo before Sterling scuffed an angled shot wide after Ilkay Gundogan had set up the opportunity.
There was a chance for Wolves in the 32nd minute after Eliaquim Mangala had fouled Costa near the right hand corner of the home area. Marshall lifted the free-kick into the box and Ryan Bennett climbed high to send in a header that Bravo had to dive to save.
A minute later Bennett launched a long through ball into the City half and Enobakhare was too high with an attempted lob over Bravo.
Norris had to punch away a fierce drive from Aguero and it was Aguero again, five minutes before the break, hooking narrowly wide of the near post after a cross from Sterling.
Batth looked to have won the ball when he tackled Gundogan some 25-yards out from Norris’s goal. The captain was penalised but Yaya Toure’s free-kick was too high to worry Norris.
Just before the break Mangala was muscled off the ball by Enobakhare who ran into the box only to lose out in a one against one with Bravo who smothered the striker’s low shot at close quarters.
Half-Time: City 0 Wolves 0
The second period opened with a succession of City attacks and whilst Norris didn’t have a direct save to make, he was kept busy dealing with a number of crosses.
Jack Price fired over the bar from distance after good work from Enobakhare and Marshall had created the opening and then, in the 65th minute Costa ran through onto Marshall’s through ball but his touch allowed Bravo to close him down and block the shot.
Norris knocked Coady’s back pass into the path of Aguero but the keeper soon made amends by saving the low shot that followed.
The keeper was soon in the thick of things again after Bernardo Silva had run into the box. Norris parried Silva’s initial effort before grabbing the loose ball. He then caught a cross-shot from Danilo at the near post.
In the minutes that followed there were two substitutions from the visitors with Connor Ronan taking over from Marshall and Ivan Cavaleiro from Costa.
On 81 minutes there was a chance for Ronan who chased down Enobakhare’s through ball and ran into the box. But in trying to work a shooting position for himself, the youngster checked inside Mangala who got a foot in to clear the danger.
Price went into the book for a foul on Sterling, before Kevin De Bruyne replaced Gabriel Jesus in the 82nd minute, and then Bennett was shown a yellow card for a foul on Silva.
De Bruyne soon made his presence felt and he set up a chance for Sterling who was wide of the mark with his shot.
As the game drifted into stoppage time, Wolves had a great chance of stunning the football world with a last gasp winner. Enobakhare broke from inside his own half and charged towards the City goal with two defenders at his shoulders for company. But Bravo, once again, came to his team’s rescue saving Enobakhare’s attempt to find the net.
The final whistle soon followed and as the players prepared for extra-time, both side’s made a change with John Stones replacing Tosin Adarabioyo for City, and Leo Bonatini took over from Enobakhare for Wolves.
Toure was booked for a blatant dive on the edge of the Wolves area before another City change saw Leroy Sane replacing Silva.
In the ninth minute of extra-time, Norris had to fist away a powerful effort from Sterling, and then Kortney Hause blocked in quick succession from Aguero and Sterling.
After a De Bruyne drive had been deflected over for a corner, a third City change saw Kyle Walker entering the fray in place of Danilo.
Sterling was wide from the 18-yard line and Wolves threatened when Ronan ran into the right of the City box and crossed to Cavaleiro with the ball ending in the side netting for a corner after a brief scramble.
After 118 minutes play, City were awarded a free-kick, 22-yards out, after N’Diaye’s challenge on Sterling. It was an ideal situation for De Bruyne who took the kick but he planted the ball over the bar.
The game ended with Norris getting everything behind a low effort from Aguero. It was the first time this season that City had failed to score in League or Cup.
The penalty shoot-out that followed took place at the end of the ground that held the visiting fans who, after City had emerged victorious, gave the gallant heroes in gold and black the standing ovation they fully merited.
Full-Time: City 0 Wolves 0
Penalty Shoot Out
Bonatini – Sends Bravo the wrong way 1-0
De Bruyne – Norris goes right way but is beaten 1-1
Toure – Fires into roof of net 1-2
N’Diaye – Bravo dives to right and saves 1-2
Coady – Bravo dives to left and saves 1-2
Sane – Scores via the underside of bar 1-3
Aguero – Floats it in after sending Norris the wrong way 1-4
City: Bravo, Danilo (Walker 103), Sterling, Gundogan, Aguero (capt), Mangala, Silva (Sane 95) , Adarabioyo (Stones 90), Jesus (De Bruyne 82), Zinchenko, Toure.
Unused subs: Moraes, Delph, Nmecha.
Booking: Toure (92 – simulation).
Wolves: Norris, Vinagre, Hause, Price, Batth (capt), Bennett, Costa (Cavaleiro 79), N’Diaye, Enobakhare (Bonatini 90), Coady. Marshall (Ronan 72).
Unused subs: Burgoyne, Doherty, Miranda, Deslandes.
Bookings: Price (82 - fould), Bennett (84 – foul).
Referee: K. Friend.
Attendance: 50,755