Southampton protected an early lead with the help of a string of Alex McCarthy saves as Manchester City were surprisingly beaten.
Che Adams ended his wait for a first Premier League goal with an incredible long-range strike to see Southampton to a shock 1-0 win over Manchester City.
Adams was making his 25th top-flight appearance for Saints since his £15million signing just over a year ago, but he picked a fine time to break his duck.
City rested Kevin De Bruyne and Phil Foden, among others, after crushing champions Liverpool in midweek and lacked fluency from the outset at St Mary's, although Adams' wonderful finish preceded a flurry of chances for Pep Guardiola's men.
Goalkeeper Alex McCarthy was in inspired form, however, and the hosts held on to hand City their ninth league defeat of the season and their third in a row away from home.
The second-placed side were made to pay for their sloppy start when Stuart Armstrong stole possession from Oleksandr Zinchenko on halfway and the ball ran for Adams – without a goal since April 2019 – to sweep a stunning 40-yard effort over the stranded Ederson and into a gaping net.
Pressure subsequently built on the Southampton goal, where McCarthy watched Gabriel Jesus miss the target from close range before getting to work.
In a frantic spell, McCarthy parried from Raheem Sterling, dived after a Fernandinho shot that bounced away off the post and then sprang back to his feet to brilliantly repel David Silva's header.
Riyad Mahrez was next to find the insoured keeper blocking his path, before a stretching Danny Ings volleyed over when he might have doubled Saints' lead just before half-time.
McCarthy was at it again following the interval, keeping out Jesus' header and then smothering from Silva after a pinpoint Zinchenko pass.
De Bruyne and Foden soon arrived from the bench, but the withdrawals of Mahrez and Sterling only seemed to hurt City further and Ederson had to stop an Armstrong blast as his side stuttered to a surprise loss despite applying plenty of late pressure.
What does it mean? City miss key men
All 20 teams in the Premier League are adapting to a packed schedule that ensures a number of star players must be rested regularly. This time, it was the turn of City pair De Bruyne and Foden.
But with Sergio Aguero also out through injury, City lacked a cutting edge in the final third. Guardiola will hope to have all three fit and firing by the time the Champions League rolls around again.
McCarthy makes amends
In Southampton's previous home game, their hopes of beating Arsenal were hindered by a poor McCarthy error that allowed Eddie Nketiah to net the opener. The goalkeeper's display on Sunday ensured that mistake will be quickly forgotten.
While the energy of the hosts' outfield players forged opportunities in attack, they were grateful to McCarthy for save after save to improbably keep City at bay.
Many have highlighted frailties in the centre of the City back line as the root cause of their failed title defence, but Aymeric Laporte has usually avoided criticism.
The Frenchman was uncharacteristically shaky on the south coast, though, hastily hacking at two mistimed clearances, while partner Eric Garcia almost played in Adams to net again midway through the second period.
Key Opta Facts
- Southampton have ended a run of six consecutive Premier League defeats against City, with this their first victory against the Citizens in the competition since May 2016 (4-2).
- Guardiola has lost three consecutive away league games for the first time in his managerial career.
- City have lost nine Premier League games this season, last losing more in a single campaign back in 2015-16 under Manuel Pellegrini (10).
- Adams' goal for Southampton was the longest-range Premier League strike so far this season (39 yards).
In-form Everton lie in wait for Southampton at Goodison Park on Thursday, by which point City will have faced Newcastle United in Manchester.