Manchester City had to dig deep to see off a battling Sheffield Wednesday side in their FA Cup third round replay.
Manchester City striker Darius Vassell celebrates his winner
Stephen Ireland slotted home after good work by Joey Barton to put City ahead but Lee Bullen levelled with a flicked header from Chris Brunt's free-kick.
Owls keeper Mark Crossley brilliantly denied Darius Vassell three times but the former England man persevered and fired home a ferocious winner.
City play another Championship team, Southampton, at home in round four.
But they will not be taking anything for granted after being pushed all the way by Wednesday, who were inspired by their former Wales international shot-stopper.
Crossley was stationary as Barton's early free-kick whistled past his left-hand post - but the 37-year-old kept his side in the game in the first half, saving twice from Vassell after the pacey frontman twice ran clear.
Vassell took a heavy touch on his first chance, allowing the somewhat bulky Crossley to come out and block, but he did nothing wrong with his next opportunity - only for the keeper's legs to deny him.
606 DEBATE: Give your thoughts on the match
Wednesday had their chances too though, with Weaver saving well from Marcus Tudgay's drive and the impressive Brunt seeing his drilled shot swerve just wide.
So it was perhaps a little harsh on Brian Laws' side that they went in behind at the break - Barton springing their offside trap and unselfishly squaring the ball for Ireland to slot home.
Barton has been linked with a move to Everton but his performance - and his reaction to Ireland's goal - suggested his commitment to City, something he underlined after the match.
Graham Coughlan should have levelled immediately when he headed over from point-blank range but the Owls did not have to wait long after the restart to draw level.
With the City defence napping, Bullen nipped in front of Trevor Sinclair to meet Brunt's free-kick and send his header flying past Weaver and into the net.
But after doing all the hard work, Wednesday immediately handed the advantage back to their hosts.
Crossley saved well yet again from Vassell in a one-on-one situation from Ireland's pass but the striker was not to be denied.
The otherwise ineffective Bernardo Corradi teed up Vassell in the box and he took time to steady himself before rifling an unstoppable shot into the top corner.
That should not have been the end for Wednesday but, despite being roared on by their army of 6,000 travelling fans, you sensed their moment had passed.
The Owls continued to press hard, only to find the City defence showing why it has only conceded two goals in the last five games.
When they did get a sniff, Tudgay blazed over from a good position and Coughlan again failed to find the target with a header from Brunt's corner.
At the other end Ireland saw his shot cleared off the line by Glenn Whelan but it is still City who progress.
Manchester City manager Stuart Pearce:
"It was a very open game. There wasn't much between the two sides.
"We are delighted to be through to the next round. Darius has won the tie and deserved a goal for his hard work."
Sheffield Wednesday manager Brian Laws:
"It was fantastic to watch, particularly the second half which was end to end.
"The excitement of the Cup still remains, that is clear.
"Of course I am disappointed we have not gone through but if I am going to lose to anyone I don't mind losing to (City boss) Stuart Pearce."
Man City: Weaver, Richards, Dunne, Distin, Jordan, Sinclair, Barton, Ireland, Dabo, Vassell (Beasley 90), Corradi (Samaras 76).
Subs Not Used: Isaksson, Johnson, Miller.
Goals: Ireland 44, Vassell 56.
Sheff Wed: Crossley, Simek (Wood 88), Bullen, Coughlan, Spurr, Tudgay, Lunt (Folly 46), Whelan, Brunt, MacLean, Burton (Small 46).
Subs Not Used: Adamson, Graham.
Booked: Coughlan, Whelan.
Goals: Bullen 51.
Ref: M Dean (Wirral).