Niclas Eliasson fired in with the hosts’ first shot on target after a game in which both sides missed several chances, with the Reds playing the better football throughout.
Gerhard Struber’s men remain third-bottom, a point from safety and that gap could grow when fourth-bottom Stoke City visit leaders West Bromwich Albion on Monday.
Kenny Dougall came in for the injured Bambo Diaby, with Aapo Halme dropping back to centre-back while goalkeeper Brad Collins replaced the ill Sami Radlinger. There was a blow for the Reds in the warm-up as Clarke Oduor sustained an injury and was replaced by Ben Williams with Romal Palmer moving onto the bench. Jacob Brown nearly scored an own goal in the tenth minute when he headed a corner against his own crossbar. Alex Mowatt should have put the Reds ahead when Marcel Ritzmaier cushioned a cross from the right nicely to the captain but his eight-yard shot with the goal gaping was straight at the goalkeeper Daniel Bentley. Mowatt’s corner was then headed down by Halme to Conor Chaplin whose 15-yard powerful effort was impressively tipped over by Bentley. Famara Diedhiou headed a fine chance wide from close range after Niclas Eliasson beat Jordan Williams and floated in a fine cross.
Another Elliason corner was then headed onto the post by Ashley Williams. At the other end, Ritzmaier came close to his first Barnsley goal as he smashed a shot wide from a tight angle on the left of the box after the home defence left a right-wing cross by Brown.
Chaplin came close early in the second half when, after a good run and pass by Thomas, he was through on the left of the box and dinked the ball over the goalkeeper but Ashley Williams blocked. Thomas then missed a superb chance as he touched a Chaplin shot wide from five yards out after excellent work by Brown and Mowatt. Elliason should have put the hosts ahead just before the hour-mark when Jay Dasilva beat Thomas on the left and crossed to the back post where Andreas Weimann’s shot was blocked by Ben Williams and fell for the Swede who blazed over from 12 yards out.
Ritzmaier then chipped an audacious effort onto the crossbar from 15 yards out following a good move on the right of the box which saw Thomas backheel to Jordan Williams who crossed low to Ritzmaier.
Diedhiou then blazed a superb chance over with 20 minutes left after winning a header then getting the ball back from strike partner Weimann who crossed from the right. Diedhiou came close again after a Brownhill long throw was headed on by Ashley Williams and the Senegal international sent an overhead kick wide.
The goal came in the 87th minute when Dasilva beat both Thomas, who had lost the ball, and Jordan Williams on the left wing before his cross went all the way through the area to Eliasson who took a touch before finding the bottom left corner from eight yards out.
Barnsley brought on Elliot Simoes and he set up a good chance for Mowatt who blazed over from 15 yards out in injury-time. Bristol (4-2-3-1): Bentley; Hunt, Baker, Williams, Dasilva; Elliason, Smith; Weimann, Brownhill, Paterson (O’Dowda 86); Diedhiou Subs: Wollacott, Nagy, Semenyo, Moore, Rowe, Massengo. Goals: Eliasson 87.
Barnsley (4-4-2): Collins; J Williams, Halme, Andersen, B Williams (Ludewig 72mins); Dougall, Thomas (Simoes 88), Ritzmaier, Mowatt; Chaplin, Brown. Subs: Walton, Schmidt, Styles, Palmer, Sibbick. Yellow cards: Halme, B Williams.