Bristol City had led 1-0 at the interval thanks to Luke Ayling’s well-directed header past the diving Ross Turnbull from a cross by Joe Bryan in the 36th minute.
In scoring against Barnsley, Ayling became the 15th different player in Bristol City’s squad to find the net this season – in only their 17th game in all competitions.
Neither team showed any changes in personnel after the break, but whatever home manager Danny Wilson said impacted on the Reds who impressed in the opening exchanges of the second period.
Devante Cole should have equalised in the 54th minute, but Bristol City defender Aden Flint frantically hacked the teenage forward’s header off the line. The Reds did, however, draw level just before the hour mark.
Ryan Williams fed Sam Winnall and after his initial strike had been checked by Ayling, the Reds’ forward bent in an exquisite strike from 15 yards.
The resurgent Reds then went in front in the 68th minute when Conor Hourihane slotted home from the penalty spot after he had been tripped in the box by Ayling.
The Robins had set a new club record of 14 league matches without defeat at the start of the season by drawing against Bradford City on Tuesday, but Hourihane’s eighth goal of the campaign looked to have brought that run to an end.
However, the Reds were pulled back to parity with 11 minutes to go when Aaron Wilbraham – who had gone six matches without a goal – profited from some indecisive defending as he buried a 20-yard shot into the top corner to make it 2-2.
There was still time for Hourihane to clip a post late on as both sides vainly pressed for a winner in a frantic conclusion to the match.
Bristol City manager Steve Cotterill said: “We probably went through all the emotions.
“We ended up going 2-1 down, whether that was fair enough I don’t really know, maybe it was.
“But when we went 2-1 down, it wasn’t just Bristol City that were 2-1 down away from home, it was Bristol City the last club in the Football League to remain unbeaten that were 2-1 down away from home, and that pressure then intensifies on the players.
“I thought they were fantastic. It was a really good away performance, we just made a couple of mistakes.”
Barnsley: Turnbull, Cranie, Nyatanga, Ramage, Dudgeon, Hourihane, Berry, Bailey, Winnall, Williams (Jennings 84), Cole. Unused substitutes: Treacy, Hemmings, Davies, Mvoto, Bree, Lita.
Bristol City: Fielding, Little, Flint, Ayling, Williams, Smith, Elliott, Bryan (Cunningham 90), Freeman (Emmanuel-Thomas 70), Wilbraham, Agard (Wagstaff 86). Unused substitutes: El-Abd, Richards, Burns, Pack.
Referee: Darren Deadman (Cambridgeshire).