Southampton manager Nathan Jones recorded the biggest win of his short reign as they reached the EFL Cup semi-finals with a richly deserved win over favourites Manchester City.
Jones has struggled for approval from Saints fans since his arrival from Luton Town but his rating surely soared with the manner in which the Premier League strugglers maintained their good cup form.
Manchester City manager Pep Guardiola rested key players such as Erling Haaland and Kevin de Bruyne with this weekend's derby with Manchester United at Old Trafford in mind, but nothing must detract from a vibrant Southampton display.
The game was settled in the first half by Sekou Mara's crisp finish after 23 minutes and a superb second from Moussa Djenepo five minutes later when he caught City keeper Stefan Ortega badly out of position off his line with a lofted long-range finish.
Guardiola threw on De Bruyne and Haaland after the break but it was to no avail as Southampton defended their lead with fierce determination to reach the last four, where they will face Newcastle.
Is Jones turning the tide?
The swathes of empty seats for a cup quarter-final at home to Manchester City hinted at the mood at St Mary's, with Southampton fans unimpressed with the appointment of Jones and his poor start, but by the end there was real joy around the stadium after this outstanding win.
Jones still has a lot of work to do, both in terms of moving Saints out of the relegation zone and winning over the sceptics, but this will do him and his players the power of good on every level.
And with Croatia international Mislav Orsic, fresh from the World Cup, getting a late debut as a substitute following his arrival from Dinamo Zagreb, and the talented midfield man Carlos Alcaraz paraded on the pitch after completing his move from Racing Club in Argentina, things suddenly look brighter.
Jones has demanded aggression and intensity from Southampton and he got it here, especially in the first half when reshuffled City were over-run in midfield, while Mara and Djenepo provided the cut and thrust.
And for the manager, it is the sort of statement win against elite opposition that will help those who are unconvinced by his methods have growing belief.
Southampton now have a vital Premier League game against fellow strugglers Everton at Goodison Park on Saturday and will travel to Merseyside with confidence lifted by an outstanding performance with a result to match.
Manchester City caught cold
Manchester City arrived on the rain-lashed south coast as hot favourites to progress to the EFL Cup last four against struggling Saints but the tables were turned as the lacklustre Premier League champions got what their mediocre performance deserved.
Guardiola may have made changes but the starting line-up still included experience in the shape of Kyle Walker, Aymeric Laporte, Jack Grealish, Ilkay Gundogan, Joao Cancelo, Phil Foden and World Cup winner Julian Alvarez.
It had enough quality to perform better than this and it was a particularly bad night for deputy keeper Ortega and Kalvin Phillips, given his first start but so poor and off the pace that it was no surprise when he was substituted.
He has, in his defence, been desperately short of first-team action but did nothing here to suggest he will be forcing his way through Guardiola's embarrassment of midfield riches any time soon.
Ortega was also caught hopelessly out of position for Djenepo's goal from distance, the crucial second that bolstered Saints' belief even further and gave City a deficit that even they could not claw back.
The EFL Cup may not be at the top of Guardiola or City's priorities but this remains a bitterly disappointing performance and result.
Player of the match
Ward-ProwseJames Ward-Prowse
Southampton
Squad number8Player nameWard-Prowse
Squad number10Player nameAdams
Squad number19Player nameDjenepo
Squad number2Player nameWalker-Peters
Squad number18Player nameMara
Squad number11Player nameOrsic
Squad number45Player nameLavia
Squad number15Player namePerraud
Squad number9Player nameA Armstrong
Squad number27Player nameDiallo
Squad number24Player nameElyounoussi
Squad number22Player nameSalisu
Squad number6Player nameCaleta-Car
Squad number4Player nameLyanco
Squad number31Player nameBazunu
Line-ups
Southampton
Formation 4-2-3-1
31Bazunu
4Lyanco6Caleta-Car22Salisu2Walker-Peters
45Lavia27Diallo
19Djenepo8Ward-Prowse9A Armstrong
18Mara
31Bazunu4Lyanco6Caleta-Car22Salisu2Walker-Peters45LaviaBooked at 25minsSubstituted forElyounoussiat 62'minutes27DialloBooked at 79mins19DjenepoSubstituted forPerraudat 57'minutes8Ward-Prowse9A ArmstrongSubstituted forOrsicat 83'minutes18MaraSubstituted forAdamsat 62'minutesSubstitutes
7Aribo10Adams11Orsic13Caballero15Perraud23Edozie24Elyounoussi46Morgan50FinniganMan City
Formation 4-3-3
18Ortega
7Cancelo2Walker14Laporte21Gómez
80Palmer4Phillips8Gündogan
47Foden19Álvarez10Grealish
18Ortega7Cancelo2WalkerSubstituted forAkanjiat 45'minutes14Laporte21GómezSubstituted forAkéat 45'minutes80PalmerSubstituted forDe Bruyneat 45'minutes4PhillipsSubstituted forRodriat 63'minutes8Gündogan47Foden19Álvarez10GrealishSubstituted forHaalandat 56'minutesSubstitutes
6Aké9Haaland16Rodri17De Bruyne20Bernardo Silva25Akanji26Mahrez31Ederson82LewisReferee:Peter BankesAttendance:22,996Live Text
Match ends, Southampton 2, Manchester City 0.
Second Half ends, Southampton 2, Manchester City 0.
Corner, Southampton. Conceded by Nathan Aké.
Corner, Southampton. Conceded by Phil Foden.
Foul by Julián Álvarez (Manchester City).
Kyle Walker-Peters (Southampton) wins a free kick on the right wing.
Attempt blocked. Mislav Orsic (Southampton) right footed shot from outside the box is blocked. Assisted by Mohamed Elyounoussi.
Attempt blocked. Mohamed Elyounoussi (Southampton) right footed shot from the centre of the box is blocked. Assisted by Che Adams.
Foul by Rodri (Manchester City).
James Ward-Prowse (Southampton) wins a free kick in the defensive half.
Substitution, Southampton. Mislav Orsic replaces Adam Armstrong.
Delay over. They are ready to continue.
Delay in match because of an injury Julián Álvarez (Manchester City).
Ibrahima Diallo (Southampton) is shown the yellow card for a bad foul.
Phil Foden (Manchester City) wins a free kick in the attacking half.
Foul by Ibrahima Diallo (Southampton).
Attempt missed. Julián Álvarez (Manchester City) right footed shot from the centre of the box misses to the right. Assisted by Ilkay Gündogan.
Offside, Southampton. James Ward-Prowse tries a through ball, but Che Adams is caught offside.
Attempt blocked. James Ward-Prowse (Southampton) right footed shot from the right side of the box is blocked. Assisted by Kyle Walker-Peters.
Nathan Aké (Manchester City) wins a free kick in the defensive half.