Manchester City crashed to a third successive away Premier League defeat as Che Adams' first Southampton goal secured a hard-fought 1-0 win at St Mary's.
It is the first time Pep Guardiola has lost three consecutive away league games in his managerial career following defeats at Manchester United and Chelsea with the goal coming on 16 minutes when Stuart Armstrong dispossessed Oleksandr Zinchenko and Adams lobbed the stranded Ederson from 35 yards.
City missed a host of chances to level with Fernandinho striking the post as Southampton goalkeeper Alex McCarthy and his two centre-backs, Jack Stephens and Jan Bednarek, produced inspired performances to preserve their slender lead.
The result moves Southampton up to 13th in the table while City remain on 66 points in second place, 23 points off champions Liverpool after a ninth league defeat of the season.
Southampton: McCarthy (9), Walker-Peters (8), Bertrand (7), Bednarek (9), Stephens (9), Romeu (7), Ward-Prowse (8), Armstrong (7), Redmond (7), Adams (8), Ings (8).
Subs: Smallbone (n/a), Long (6).
Man City: Ederson (6), Cancelo (6), Zinchenko (4), Laporte (5), Garcia, (5) Fernandinho (5), Silva (6), Bernardo (6), Mahrez (6), Sterling (5), Jesus (5).
Subs: De Bruyne (6), Foden (6).
Man of the match: Jack Stephens.
How City slumped to shock Saints defeat
Having thrashed newly-crowned champions Liverpool 4-0 on Thursday evening, Guardiola decided to shuffle his pack at St Mary's, making six changes.
Southampton could play with the shackles off, free from any relegation fears and entering the game on 40 points, their best tally at this stage in three seasons.
Saints last played a week ago while City were last in action on Thursday, and it showed in the opening period as the hosts converted their bright start into a lead.
Adams was having his worst run without a goal in senior football - 35 games - and hadn't scored in any of his previous 29 games since joining Southampton for £15m from Birmingham last summer.
That changed in spectacular fashion as Zinchenko was caught in possession by Armstrong, with Adams taking advantage of Ederson being well off his line to lob the City goalkeeper from 35 yards.
Pep Guardiola opted to ring the changes as he made six alterations. Joao Cancelo and Oleksandr Zinchenko came in as the full-backs while there were starts in midfield for Fernandinho, Bernardo Silva and skipper David Silva, while Riyad Mahrez was also recalled.
Southampton made three changes of their own. Will Smallbone and Shane Long dropped to the bench as Stuart Armstrong and Che Adams were drafted in, while Jack Stephens replaced Jannik Vestergaard in the heart of the Saints defence.
"Our plan was to force them into mistakes and to be clinical and quick in the mind. It was the perfect first-time strike from Che," Ralph Hasenhuttl said afterwards.
The goal sparked the visitors into life as Danny Ings was in the right place to hook clear a Joao Cancelo cross from underneath his own crossbar.
Alex McCarthy was then called into action twice in the space of 30 seconds either side of Fernadinho striking the post as City peppered the Southampton goal through Raheem Sterling and David Silva - but Hasenhuttl's side somehow survived.
Guardiola may have suspected it might not be their day when McCarthy was in the right place to keep out a venomous drive by Riyad Mahrez before the interval, but the City boss was very nearly celebrating an equaliser two minutes after the restart when Gabriel Jesus' header from close range was kept out again by the overworked McCarthy.
The Southampton stopper had to then spread himself to deny David Silva after a lovely turn from the Spaniard away from Bednarek. Guardiola had seen enough as he hauled off Raheem Sterling and Mahrez for Kevin De Bruyne and Phil Foden on the hour-mark.
De Bruyne was struggling to find his range, but it was the Belgian's cross that landed at the feet of Bernardo after a rare poor clearance by Stephens, but the Portuguese could only shoot wide.
The second drinks break came at a good time for Hasenhuttl's side as Southampton were able to regain their composure - and they nearly doubled their lead when Armstrong ran onto an Ings lay-off to strike his shot at the legs of Ederson.
City huffed and they puffed - producing 26 shots in this game - their highest tally in a Premier League match without scoring since March 2016 versus Manchester United.
But Southampton grew in belief that an unlikely victory would be secured, and after De Bruyne's stoppage-time free kick slammed into the wall, it was theirs.
What the managers said
Southampton boss Ralph Hasenhuttl: "You have to be brave and have a bit of luck. We showed a lot of passion and we got what we deserved. The goal means a lot to Che and also to us. He has really deserved this goal and he worked hard throughout.
"Sometimes, it's not possible to get something and I don't just want to talk about one player as there were a lot of good performances.
"You could always feel the belief and the game plan of allowing them possession and breaking on the counter-attack worked well. Every win is important - we were last in the home rankings and this was by far the best performance we've had here since I was a manager and it had to be in order for us to win."
Man City boss Pep Guardiola: "The Liverpool result is in the past. It was a really good performance but it was a résumé of this season. We made a mistake and they punished us. We've lost a lot of games like this, and if you do that you can't compete to win the Premier League.
"We use our goalkeeper in the build up to play better. He gives us a lot to play better, but we have to improve. This has happened many times this season. The number of chances that we had, we have to try to score more goals.
"We've scored the most goals in the Premier League, but we've lost a lot of games. It's hard even for me to find a reason why, but we have to look at the way we play and try to concede as few as possible."
Man of the match - Jack Stephens
It is hard to single out a player in a red and white shirt, but Stephens threw his body at everything. The centre-back returned from suspension to underline his importance to the Southampton team with 11 clearances.
Only his partner Jan Bednarek (15) managed more while his four blocks were the most by any player during a superb defensive display to preserve only a third home league clean sheet of the season.
How City suffered on the south coast in numbers
- Pep Guardiola has lost three consecutive away league games for the first time in his managerial career.
- Manchester City have lost nine Premier League games this season, last losing more in a single campaign back in 2015-16 under Manuel Pellegrini (10).
- City made six changes to their starting XI for this game, the fifth time they've made six or more changes for a Premier League match this season. Indeed, the Citizens (120) have made 33 more changes than any other side in the division this campaign (Arsenal and Chelsea the next most with 87 each).
Southampton travel to face Everton at Goodison Park on Thursday (kick-off: 6pm) while Manchester City host Newcastle a day earlier at the Etihad Stadium, also at 6pm.