Match ends, Barnsley 2, Bristol City 2.
Josh Brownhill headed a late equaliser for play-off hopefuls Bristol City to deny Barnsley their first home win in the Championship since early November.
Kieffer Moore gave the home side an early lead when he beat goalkeeper Frank Fielding to a corner to head in.
Famara Diedhiou curled home a superb equaliser, but Brad Potts fired home from eight yards for Barnsley's second.
Midfielder Brownhill, though, had the final word as he scored with a looping header from Joe Bryan's cross.
City have not won away from home for 11 games, but remain seventh in the Championship table, while Barnsley will slip into the bottom three if Birmingham beat Ipswich on Saturday.
Jose Morais' side carved out the majority of the chances, both before and after Diedhiou's strike, with Fielding denying Potts early in the second half and then making two saves from Moore in the space of a minute with the score at 1-1.
It looked like they would register only their fourth home victory of the campaign when Moore cut the ball back for Potts to restore their advantage.
But Brownhill followed Aston Villa's Conor Hourihane and Josh Scowen of QPR, all three members of the Barnsley team that won the 2016 League One play-off final, in scoring vital goals against them since the start of 2018.
Barnsley boss Jose Morais told BBC Radio Sheffield:
"I congratulated the players for their effort and the performance. I have the feeling that we will get the points that we want.
"We were in a good position to win but football is like this. Sometimes you deserve something else from the game and sometimes you have the opinion that decisions did not go in your favour.
"I believe in the quality of these players and they are starting to believe that something remarkable will happen."
Bristol City boss Lee Johnson told BBC Radio Bristol:
"I thought it was a resilient point in the end. I didn't think we were at our best.
"I thought it was a difficult game. The pitch, conditions and environment were difficult, and Barnsley worked their socks off, so you have to give them credit.
"I thought we started a little bit poesy. We were a little bit slow to get on the front foot, and that was a little bit disappointing. It's quite difficult to come back from that."
- 20PottsBooked at 79mins
- 10MoncurSubstituted forWilliamsat 61'minutesBooked at 82mins
- 11IsgroveSubstituted forHammillat 61'minutes
- 19MooreSubstituted forMcCarthyat 88'minutes
- 5WrightBooked at 6mins
- 21PackSubstituted forDjuricat 76'minutes
- 20PatersonSubstituted forKentat 65'minutes
- David Webb
- Shots on Target
Second Half ends, Barnsley 2, Bristol City 2.
Attempt blocked. Adam Hammill (Barnsley) right footed shot from the left side of the box is blocked.
Corner, Barnsley. Conceded by Joe Bryan.
Offside, Barnsley. Ezekiel Fryers tries a through ball, but Adam Hammill is caught offside.
Corner, Bristol City. Conceded by Liam Lindsay.
Attempt missed. Brad Potts (Barnsley) right footed shot from the right side of the box is high and wide to the right.
Goal! Barnsley 2, Bristol City 2. Josh Brownhill (Bristol City) header from the centre of the box to the bottom right corner. Assisted by Joe Bryan with a cross.
Substitution, Barnsley. Jason McCarthy replaces Kieffer Moore because of an injury.
Delay over. They are ready to continue.
Delay in match Kieffer Moore (Barnsley) because of an injury.
Corner, Bristol City. Conceded by Ezekiel Fryers.
Foul by Milan Djuric (Bristol City).
Kieffer Moore (Barnsley) wins a free kick in the defensive half.
Eros Pisano (Bristol City) wins a free kick on the right wing.
Foul by Oliver McBurnie (Barnsley).
Ryan Kent (Bristol City) wins a free kick in the defensive half.
Foul by Joe Williams (Barnsley).
Brad Potts (Barnsley) is shown the yellow card for excessive celebration.
Goal! Barnsley 2, Bristol City 1. Brad Potts (Barnsley) right footed shot from the centre of the box to the bottom right corner. Assisted by Kieffer Moore with a cross.