Manchester City fought back from going a goal down to beat Southampton and reach the FA Cup fifth round.
Barton celebrates putting City ahead against Southampton in the FA Cup
Saints took the lead after City striker Georgios Samaras miskicked when clean through and the clearance reached Kenwyne Jones, who lobbed Nicky Weaver.
But City equalised instantly when Darius Vassell spun in the area and planted a low shot into the corner.
Stephen Ireland set up Joey Barton to put City ahead and DaMarcus Beasley then scored from Richard Dunne's pass.
Weaver was clearly at fault for Southampton's goal as he came rushing out of his area when Micah Richards appeared to be in control of the situation.
But Samaras should share the blame for failing to convert Ireland's pass in the first place.
606 DEBATE: Give your thoughts on the match
The Greek international was in lacklustre form up front after being handed his first start since 7 January and early on it was not hard to see why City have had such trouble scoring goals recently.
But falling behind to their Championship opponents seemed to wake Stuart Pearce's side from their slumber.
And two minutes later they were level when Hatem Trabelsi made ground down the right and Vassell swivelled to fire past Kelvin Davis into the bottom corner.
Even Samaras began to look dangerous as City upped the ante - although he did head wastefully over from Barton's cross when well placed.
It still seemed Southampton would go in level at the break but Ireland had other ideas.
He ran at the heart of the visitors' defence before sliding the ball into the path of Barton, who finished with aplomb before foolishly deciding to celebrate in front of the away fans.
Southampton did not lie down after the break but they failed to force Weaver into a meaningful save until Gareth Bale's injury-time shot.
Grzegorz Rasiak has scored 19 goals this season but he failed to impress during a five-month spell in the Premiership with Tottenham and he made little impact against City.
And although Bale showed signs of why he is so highly rated, the young Welshman did not get within range of Weaver's goal to try one of his trademark free-kicks.
The home side were still threatening themselves though and Beasley made sure of victory when he latched on to Dunne's long ball, rounded Kelvin Davis, and rolled the ball into an empty net.
By the end City were comfortable winners and if not for two good late saves by Davis, the impressive Ireland would have capped a fine display by getting on the scoresheet himself.
And Davis saved his best moment for the last minute when he turned a header from City substitute Ishmael Miller on to the bar from point-blank range.
Manchester City manager Stuart Pearce:
"We were well worth our victory. The players really showed that they wanted to go through.
"That is just one defeat in eight games now which is pleasing for me and is credit to the players.
"We'd be delighted if we got a home tie next and we might have a couple of new faces in our side by then too."
Southampton manager George Burley:
"We gave it our best shot and worked our socks off but overall City deserved to win the tie.
"Their goals came at a bad time for us. We had started badly and got our noses in front but conceded quite soon afterwards and right on half-time.
"We had chances but I could not ask from any more from my players."
Man City: Weaver, Richards, Dunne, Distin, Beasley, Barton (Hamann 86), Dabo, Ireland, Trabelsi, Vassell (Abdoun 89), Samaras (Miller 76).
Subs Not Used: Isaksson, Corradi.
Booked: Vassell, Trabelsi.
Goals: Vassell 26, Barton 45, Beasley 70.
Southampton: Davis, Ostlund (Licka 63), Baird, Powell, Bale, McGoldrick, Viafara, Pele, Wright, Rasiak (Wright-Phillips 63), Jones.
Subs Not Used: Bialkowski, Dyer, Makin.
Booked: Ostlund, Jones.
Goals: Jones 23.
Ref: M Clattenburg (Co Durham).