The Tykes made a flying start and went ahead after four minutes through a stunning 30-yard strike from Nathan Doyle before Freddy Eastwood drew Coventry level in the 35th minute with his second goal in as many games.
The visitors looked more likely to go in front at the end of the first half but their defence let them down once again when Goran Lovre was left all alone to put Barnsley in front just before the hour mark.
Coventry had a good chance to equalise at the end but Aron Gunnarsson fired over when clean through as Barnsley held out for the win which moved them eight points clear of the bottom three.
The defeat extended Coventry's winless run to six matches and they slipped down to 11th place as a result.
Barnsley started strongly and took the lead in style with when the Coventry defence backed off Doyle and he smashed in a looping shot which gave Kieren Westwood no chance.
Coventry were struggling to get a foothold in the game and Barnsley had another chance when a free-kick found Matt Hill in on the left-hand side but he opted to shoot instead of passing and the effort went well over.
The Sky Blues did eventually start to exert some pressure and Barnsley almost gifted them an equaliser in bizarre circumstances midway through the half.
A long ball forward was cleared by Barnsley goalkeeper Luke Steele into the path of Diego Arismendi, who inexplicably played the ball back towards his own goal. Clive Platt was completely unmarked but failed to react quick enough and Steele got back to save.
With 35 minutes gone Coventry made the pressure tell. Gunnarsson was afforded a lot of space on the right and whipped in a cross which just missed Platt but Eastwood was on hand to bundle the ball over the line.
The equaliser buoyed the visitors and they came close to going in front before half-time when Richard Wood almost got a vital touch on to Gary McSheffrey's corner but Barnsley somehow scrambled it away.
Coventry finished the first half on top but they found themselves behind once again 12 minutes after the restart after more shocking defending.
A hopeful ball into the box found Garry O'Connor and from his flick-on Lovre was left completely unmarked to slot the ball home from close range.
Once again Adrian Boothroyd's side found themselves chasing the game but they reacted well with McSheffrey's 25-yard shot bringing a good save out of Steele.
They had to wait until injury-time for their best chance to equalise but Gunnarsson fired over when he should have done better.