Southampton suffered their first defeat since September 23, as Bristol City scored three second-half goals to end Saints' club-record 25-game unbeaten run in all competitions.
Goals from Sam Bell, Rob Dickie and Harry Cornick saw Saints drop to third place with their first defeat in 23 games in the Championship.
Saints hadn't lost since losing four in a row in September, but their only consolation was Adam Armstrong's penalty awarded late on when they were trailing Leeds United. 4-0 win over Swansea pushed them to second place.
Liam Manning's City have moved into the top half of the table, up to 11th place, after a run of four home games without a win, and are now just four points from the play-off zone.
The home side took the lead in the 52nd minute with a fine one-two with Jason Knight on the right side of the box, Albanian midfielder Anis Mehmeti lofting a low cross and Bell scoring from close range.
It was his first goal since September, when he scored three goals in five games.
In the 72nd minute, centre-back Dickie broke through the Saints defense and headed in Joe Williams' left corner.
Former Luton Town stalwart Cornick scored the third goal in the 82nd minute, curling in a cross from fellow substitute Ross McCrory to seal a deserved victory.
Russell Martin's Saints had to wait until stoppage time to fight back, but Armstrong scored himself after a foul on Kyle Walker-Peters, with City goalkeeper Max O'Leary at his near post. He forced a good save and scored the goal on the spot. .
At least that has allowed Armstrong to continue his impressive away form, with the striker having been involved in eight goals in his last nine away games, scoring four goals and providing four assists.
Who's next?
Southampton will be on the road again on Friday night, taking on the Hawthorns before taking on fifth-placed West Bromwich Albion.
Bristol City return to action on Saturday when they host struggling Queens Park Rangers.
Bristol City manager Liam Manning told BBC Radio Bristol:
“I'm very proud of the players. The overall performance over the last 20 games has been high.
“We pretty much got it for the rest of the game and I’m glad they finally got the result they deserved, especially in the second half.
“San Bel has improved a lot. He understands what we want now. I'm happy that he scored.”
“It was good to share the goal. We have a big threat from set pieces.”
Southampton manager Russell Martin told BBC Radio Solent:
“I was disappointed and frustrated and it ended the game for me, but I'm very proud of the players and have a lot of love for them.
“Actually, this wasn't too far from a really good performance. At half-time we had two good chances before they scored, so I thought we could keep winning.”
“But we conceded a crappy goal in the first one. We should have dealt with the cross better and we should have dealt with the second corner kick.”
“We need to make sure this is just a test. How we deal with disappointments and setbacks is what characterizes this group. And last time we weren't that bad, we were undefeated for five months.”
lineup
bristol city
formation 4-2-3-1
- 1o'leary
- 19tanner
- 26VinerBooked in 65 minutes
- 16dickey
- twenty fourRobertsReplacementmccroryin 76 minutesminutes
- 6james
- 8williamsI made a reservation in 90 minutes.
- 11MehmetiReplacementmebdein 86 minutesminutes
- 12knightReplacementgardner hickmanin 64 minutesminutes
- 20bellReplacementcornicin 65 minutesminutes
- 15ConwayReplacementwellsin 76 minutesminutes
substitute
- 2mccrory
- 9cornic
- Tenking
- 17sykes
- twenty onewells
- twenty twogardner hickman
- twenty threeBasik
- 27night level
- 47mebde
southampton
formation 4-3-3
- 31Bazunu
- 2walker peters
- twenty oneHarwood Bellis
- 35Bednarek
- 3Manning
- 16small bone
- twenty fourcharlesReplacementS. Armstrongin 45 minutesminutes
- 19RothwellReplacementSlemanain 74 minutesminutesI made a reservation in 90 minutes.
- 36brooksReplacementMarain 64 minutesminutes
- 9Armstrong
- twenty threeEdzierReplacementfraserin 64 minutesminutesI made a reservation in 90 minutes.
substitute
- Fivestevens
- 13Lumley
- 17S. Armstrong
- 18Mara
- 20Slemana
- 26fraser
- 27Amo Ameyo
- 29Megoma
- 33dibling
- Referee:
- matt donahue
- Attendance:
- 24,661
live text
-
Game over, Bristol City 3, Southampton 1.
-
End of the second half, Bristol City 3, Southampton 1.
-
Jan Bednarek (Southampton) wins a free kick in the defence.
-
Foul on Naki Wells (Bristol City).
-
Foul by Stuart Armstrong (Southampton).
-
Taylor Gardner-Hickman (Bristol City) wins a free kick in the attacking half.
-
Sekou Mara (Southampton) wins a free kick in the defence.
-
Foul on Zach Viner (Bristol City).
-
Kamarudeen Slemana (Southampton) was shown a yellow card for a serious foul.
-
Foul by Kamarudeen Slemana (Southampton).
-
Rob Dickie (Bristol City) wins a free kick in defence.
-
Foul by Ryan Manning (Southampton).
-
Ross McCrory (Bristol City) wins a free kick on the right.
-
goal! Bristol City 3, Southampton 1. Adam Armstrong (Southampton) converted the penalty with a right-footed shot into the bottom right corner.
-
Joe Williams (Bristol City) is shown a yellow card.
-
Penalty Southampton. Kyle Walker-Peters was fouled inside the penalty area.
-
Harry Cornick (Bristol City) commits a foul in the penalty area and is awarded a penalty.
-
Kamarudeen Slemana (Southampton) wins a free kick in the defence.
-
Foul by Taylor Gardner-Hickman (Bristol City).
-
Ryan Fraser (Southampton) was shown a yellow card for a serious foul.