Kyle Walker-Peters scored his first league goal to give Saints a 1-0 lead in the 7th minute when he combined with Nathan Redmond on a give-and-go before volleying a sensational shot beyond Ederson with the outside of his boot.
Armando Broja then had a goal ruled out for offside on a rare counter attack with Southampton clamped into defence.
Raheem Sterling failed to find the back of the net in quick succession when he fired high and wide with a curling left-footed effort before scuffing a chance into the feet of Fraser Forster as half-time approached.
Southampton nearly made it 2-0 from a chaotic restart, but Ederson made a point-blank save on Jan Bednarek’s header while Rodri thumped an effort into the ground that Forster had to deal with at the other end.
James Ward-Prowse picked our Broja from a corner-kick only for the forward to hit the post before Bednarek fired the rebound into the stands on 54 minutes.
Phil Foden and Rodri each had a chance to pick out an equaliser for City, who maintained firm control of the match.
Foden put his foot across a sensational volleyed attempt, but Forster was equal to the task and Rodri saw his shot clip the crossbar from distance.
City, however, found their equaliser when Kevin De Bruyne picked out the unmarked run of Aymeric Laporte who calmly nodded in to make it 1-1.
Forster was rescued by his post after De Bruyne powered a curling right-footed shot around the defence in search of a goal to break the deadlock.
City maintained a 12-point lead at the top of the league table with Liverpool holding two games in hand.
Southampton rebounded from their defeat at Wolves in which they conceded three goals by putting in an immense defensive performance against the league leaders.
Southampton (4-4-2): Forster; Perraud, Salisu, Bednarek (Lyanco 71), Walker-Peters; S. Armstrong (Diallo 82), Romeu, Ward-Prowse, Redmond (Elyounoussi 45); Broja, Adams
Unused subs: Caballero (GK), Diallo, Walcott, Valery, Stephens, A. Armstrong, Long
Goals: Walker-Peters (7)
Bookings: Bednarek (33), S. Armstrong (80), Elyounoussi (90+2)
Manchester City (4-2-3-1): Ederson; Cancelo, Laporte, Dias, Walker; Rodri, Silva; Grealish, De Bryune, Sterling (Jesus 60); Foden
Unused subs: Carson (GK), Stones, Fernandinho, Wilson-Esbrand, Gundogan, Mcatee, Ake, Slicker
Goals: Laporte (65)
12 straight wins