Match ends, Bristol City 3, Sunderland 3.
Championship strugglers Sunderland came from 3-0 down to rescue a point at promotion hopefuls Bristol City.
The Robins, who have won just once in 2018, were three goals ahead inside 37 minutes as the Black Cats capitulated.
Aden Flint poked City in front before two close-range finishes from Famara Diedhiou prompted some away fans to leave Ashton Gate early.
But, after Josh Brownhill's own goal and Aiden McGeady's strike, Marlon Pack diverted into his own net for 3-3.
It capped an amazing final 20 minutes for Sunderland, whose supporters had greeted the half-time whistle with boos and chants of "you're not fit to wear the shirt" towards their own players.
Operating with a back three and wing-backs, the Black Cats had produced a woeful defensive display before the break and could have been even further behind if City had been more ruthless.
Yet a change in formation brought about a much-improved display, and Ashley Fletcher may even have equalised moments before Pack's unfortunate stoppage-time leveller, only to be denied by an incredible point-blank save from Frank Fielding.
Bristol City's dramatic collapse was as remarkable and unexpected as Sunderland's late improbable revival - and came exactly a year to the day after they squandered a 3-0 half-time lead at Derby County to draw 3-3.
Lee Johnson's side remain three points clear of seventh but have now dropped six points adrift of the automatic promotion places after a run of just one win in seven league matches.
Sunderland are 23rd, one point above bottom side Burton Albion and three points from safety.
Bristol City head coach Lee Johnson told BBC Radio Bristol:
"It's probably poor decision-making by me. I have to hold my hands up and say, tactically, I got it wrong in the second half.
"I should have settled for 3-0. I probably got excited, and felt they were there for the taking.
"We had chances but we crumbled. I should have given the lads a bit more help and put another midfielder on at 3-1, and changed it up a bit.
"So, my fault, and apologies. To lose those two points is very, very frustrating."
Sunderland boss Chris Coleman told BBC Newcastle:
"I didn't see the first 45 minutes coming. I thought we would have learned our lesson from the last couple of games but we clearly hadn't.
"The fight-back was fantastic. We got booed off at half-time - and rightly so - but the players earned the three points themselves.
"It is a matter of mentality and you must never give up, no matter how bad it is. It is about responsibility and accountability and they showed some courage.
"No-one else is going to help us. There is enough games and enough points to take care of ourselves."
- 3BryanBooked at 80mins
- 40KentSubstituted forMagnussonat 90+3'minutes
- 7SmithBooked at 45mins
- 14ReidSubstituted forDionyat 45'minutes
- 9DiedhiouBooked at 57minsSubstituted forWalshat 90+3'minutes
- 2JonesBooked at 72mins
- 3OviedoSubstituted forLua Luaat 59'minutes
- 26HoneymanSubstituted forMcGeadyat 71'minutes
- 53EjariaSubstituted forRobsonat 83'minutes
- 11Lua Lua
- James Linington
- Shots on Target
Second Half ends, Bristol City 3, Sunderland 3.
Offside, Bristol City. Aden Flint tries a through ball, but Bailey Wright is caught offside.
Attempt blocked. Joe Bryan (Bristol City) left footed shot from outside the box is blocked.
Foul by Marlon Pack (Bristol City).
Kazenga Lua Lua (Sunderland) wins a free kick in the defensive half.
Substitution, Bristol City. Liam Walsh replaces Famara Diedhiou.
Substitution, Bristol City. Hördur Bjorgvin Magnusson replaces Ryan Kent.
Own Goal by Marlon Pack, Bristol City. Bristol City 3, Sunderland 3.
Hand ball by Joel Asoro (Sunderland).
Corner, Sunderland. Conceded by Frank Fielding.
Attempt saved. Ashley Fletcher (Sunderland) right footed shot from the centre of the box is saved in the centre of the goal.
Attempt saved. Kazenga Lua Lua (Sunderland) right footed shot from outside the box is saved in the centre of the goal. Assisted by Ashley Fletcher.
Foul by Korey Smith (Bristol City).
Kazenga Lua Lua (Sunderland) wins a free kick on the left wing.
Attempt missed. Ryan Kent (Bristol City) left footed shot from the left side of the box is close, but misses to the right. Assisted by Famara Diedhiou.
Attempt blocked. Marlon Pack (Bristol City) right footed shot from outside the box is blocked. Assisted by Ryan Kent.
Substitution, Sunderland. Ethan Robson replaces Ovie Ejaria.
Offside, Bristol City. Joe Bryan tries a through ball, but Jamie Paterson is caught offside.
Goal! Bristol City 3, Sunderland 2. Aiden McGeady (Sunderland) right footed shot from the centre of the box to the bottom left corner. Assisted by Lee Cattermole following a set piece situation.