Manchester City kom till dagens möte på St Marys med två raka förluster i ligaspelet. Nederlagen mot Crystal Palace och Leicester innebar att tre poäng var det enda som gällde för att inte tappa alltför mycket mark på serieledarna Liverpool.
Och City inledde bäst på St Marys och tog ledningen redan i den 10:e matchminuten. Bernardo Silva stod för inspelet och David Silva placerade enkelt in bollen i mål. Det var spanjorens sjätte ligamål den här säsongen. Men frågan är om inte hemmalaget borde varit i ledning dessförinnan då Charlie Austin spelades fram till ett friläge. Men anfallaren tvekade och lyckades med konststycket att inte få i väg ett avslut på mål.
Southampton skulle få utdelning för sitt slit. I den 37:e minuten kom dansken Pierre Höjbjerg igenom Citys mittfält, la upp bollen framför sig och tryckte upp avslutet i nättaket. Skottet var otagbart för Ederson och innebar 1-1.
Men City var inte nöjda där. På tilläggstid i första halvlek gjorde man både 1-2 och 1-3, det första efter att Raheem Sterlings inspel styrts in via James Ward Prowse och det andra genom Sergio Agüero, som nådde högst på Olexandr Zinchenkos inlägg.
City hade flera farliga målchanser i den andra halvleken, men slarv i den sista tredjedelen gjorde att Pep Guardiolas manskap fick nöja sig med 3-1.
Med tio minuter kvar att spela synade målskytten Höjbjerg det röda kortet, efter att dansken gått bryskt in i en duell med Fernandinho.
Resultatet innebär att City går om Tottenham och upp på andra plats i Premier League. Man har fortfarande sju poäng upp till serieledarna Liverpool. På torsdag ställs ettan mot tvåan på Eastlands i Manchester.
Startelvor
Southampton: McCarthy, Ramsay, Stephens, Bednarek, Targett, Ward-Prowse, Höjbjerg, Lemina, Romeu, Elyounoussi, Austin.
Manchester City: Ederson - Danilo, Kompany, Laporte, Zinchenko - Fernandinho, David Silva, Bernardo Silva - Sterling, Aguero, Mahrez.