The 23-year-old, signed from Birmingham last summer, brilliantly lobbed Ederson to give Saints a 1-0 lead they battled valiantly to maintain.
Adams, named in a Premier League starting XI for the first time in 2020, may grab the headlines for his fine strike but Southampton goalkeeper Alex McCarthy also played a huge part in the win.
Criticised for his error in the recent defeat to Arsenal, manager Ralph Hasenhuttl has kept faith in McCarthy – who made a string of good saves.
For City, this was a huge comedown following their 4-0 thrashing of newly-crowned champions Liverpool on Thursday.
Southampton would take the lead as Adams finally broke his Premier League duck on his 25th appearance in the competition – and he did it in style.
Zinchenko was caught in possession as Stuart Armstrong stole the ball off his toe, with Adams taking advantage of Ederson being well off his line to lob the City goalkeeper from fully 35 yards.
Saints have largely been relying on Danny Ings for their goals but the striker made his mark at the other end of the pitch, clearing a cross off the line as opposing players flooded in.
McCarthy then made two important stops as City pushed for the equaliser, turning a Raheem Sterling strike away before keeping out a David Silva header either side of Fernandinho hitting the base of the post with a low drive.
Riyad Mahrez was the next to be kept at bay by McCarthy, who used his legs to keep out a shot from an acute angle.
Aymeric Laporte could not quite reach a Gabriel Jesus flick-on as the second half started as the first had concluded – City almost permanently inside the final third and the hosts looking to keep them at bay.
McCarthy was once again called upon to prevent the equaliser, this time turning away a close-range Jesus header and then keeping out David Silva’s shot.
Guardiola turned to his bench and his two in-form stars as both De Bruyne and Phil Foden were introduced just before the hour as Sterling and Mahrez made way.
Southampton finally managed to push themselves further upfield and Armstrong had a good chance to double their lead, only for Ederson to save comfortably.
The expected onslaught of the Southampton goal failed to materialise, although a misjudgement from McCarthy almost saw City draw level with a stoppage time own goal.
The last meaningful kick of the game was a De Bruyne free-kick on the edge of box, but he could only slam it into the wall as Southampton secured back to back wins.