Chris Maguire scored in stoppage time to give the home side the win after three players were earlier sent off.
Nick Proschwitz had a volley cleared off the line for the Tykes on 18 minutes after they had earlier survived two early chances for the hosts.
Emmanuel Frimpong endured a miserable debut for the visitors as he sent off for two bookable offences.
The midfielder was booked on 24 minutes and was shown a second yellow card on the half-hour mark for a challenge from behind.
Jack Hunt came closest to a goal for Barnsley when he hit the post as the ball bounced off his shoulder to strike the woodwork.
However, Barnsley were reduced to nine players when Jacob Mellis was given his marching orders in stoppage time.
Maguire netted seven minutes into stoppage time to crush the Tykes' hopes of a draw.