Nicolas Otamendi opened the scoring with a 20th minute goal before Sergio Aguero struck twice to put the lead out of reach.
Jack Stephens, who was one of six changes from the side that suffered a historic 9-0 defeat to Leicester on Friday, scored a consolation goal for the Saints a quarter-hour from full-time.
Elsewhere, Alex McCarthy made his first start since the 4-0 triumph over Portsmouth that helped Saints advance to the fourth round.
The 29-year-old goalkeeper made six saves, including three within the first 20 minutes to prevent Riyah Mahrez and Aguero from finding the back of the net, before Angeliño came close.
But the breakthrough came moments later when Otamendi rose to head in Bernado Silva’s cross — Aguero then added a second seven minutes from the halftime whistle.
Aguero scored his second after the break when he was ‘right spot, right time’ and poked in Mahrez’s deflected effort to make it 3-0.
Despite an appreciative applause at full-time, Southampton will need to regroup before facing City in just four days time in a Premier League clash right back at the Ethiad Stadum.
Manchester City: Bravo, Angeliño (Stones 79), Garcia, Otamendi, Walker (João Cancelo 65), Foden, Doyle, Silva, Jesus (Adrian Bernabe 87), Mahrez, Aguero
Unused subs: Carson (GK), David Silva, De Bruyne, Poveda-Ocampo
Goals: Otamendi (20), Aguero (38, 56)
Southampton: McCarthy, Hojbjerg, Bednarek, Stephens, Danso, Valery, Armstrong, Romeu (Vokins 90+1), Ward-Prowse, Boufal (Adams 69), Long (Redmond 68)
Unused subs: Gunn (GK), Yoshida, Ings, Vestergaard
Goals: Stephens (75)
Bookings: Romeu (33)