Nottingham Forest's unbeaten run ended at Barnsley as they suffered their first league defeat since the first game of the season.
After going behind in the fourth minute, in spite of lots of possession and plenty of play going forward, Forest were unable to find the target in the first half.
It looked like an uphill struggle for Forest when Barnsley scored from the penalty spot in the second half, but when Lewis McGugan got one back in the 69th minute an equalizer looked like a possibility.
But a late third goal from Barnsley put the game out of Forest's reach.
There was just one change to the starting line-up, with Dele Adebola given a start after scoring three in the week for the reserves. Paul Anderson moved to the bench to make way for him.
Barnsley took the lead just four minutes into the game after Kieran Trippier found himself in space on the wing and put the cross in to Adam Hammill. His effort didn't find the goal but it rebounded for Nathan Doyle, whodived in to put the ball over the line from six yards out.
Forest's first real effort came 12 minutes into the game after excellent work down right by Chris Cohen who put a good cross into the box where Dele Adebola almost made contact, but Luke Steele dived in just in time to win the ball.
Forest started to take charge of the game after this but, in spite of some good football, they could not find the final ball.
Lewis McGugan threatened with a good run and a well-placed cross and his effort forced Barnsley to put the ball out for a corner.
Barnsley had a chance from a free kick with a good curved ball by Hammill which sent Lee Camp racing across goal, but the ball went just wide of the garget.
And a left-foot effort by Cohen also came close after he picked up the cross from Dexter Blackstock, but his effort from the edge of the D went just over the top corner of the net.
Forest were close again just before the break with a header in from Blackstock which hit the top of the crossbar.
And a great effort from Wes Morgan from 30 yards forced sent Steele running, but unfortunately again the ball was off target.
An quick break by two Barnsley defenders at the start of the second half gave them a chance to double their lead. A cross by Jay McEveley found Trippier, who should have hit the target but only found the side netting.
Seconds later, McGugan came close to getting Forest on level terms when he left Stephen Foster for dead and hammered the ball low across the face of goal but, with no takers, it went wide of the far post.
Barnsley were awarded a penalty when Goran Lovre went down under Blackstock's challenge and the former Forest player Andy Gray made no mistake, firing the ball past a diving Camp.
With Forest still struggling to get on target a double substitution saw Dele Adebola and Guy Moussi replaced by David McGoldrick and Paul Anderson.
McGoldrick was soon into the action, first hitting the bottom of the post and then setting up Forest's goal with a good cross to McGugan, who scored his fifth goal of the season, skipping past two and crashing a shot low into the corner, giving Steele no chance to make the save.
A good tackle by Camp prevented Barnsley from getting a shot in and, from the keeper's clearance, Wes Morgan fed the ball through forward to McGoldrick who volleyed just wide of the far post.
With eight minutes of the half remaining, Raddy Majewski became Forest's final substitute, replacing captain Paul McKenna.
A great break by Forest looked like giving them the equalizer when McGugan played Ryan Bertrand clear, but he failed to pass the ball and sent it into the stand.
In a final attempt to get a goal, Forest moved Morgan up front for a 4-3-3 formation.
But, with Forest short of cover at the back, it was Barnsley who got on the scoresheet again when Hammill fed the ball to substitute Jacob Butterfield, who shot from a tight angle under the body of Camp for Barnsley's third goal.
Without the third goal, the five minutes stoppage time might have been a boost to Forest and Blackstock came close to getting one back, but Steele tipped the ball over the crossbar.
Nottingham Forest: Camp, Gunter, Chambers, Morgan, Bertrand, Cohen, Moussi(Anderson 64min), McKenna(C)(Majewski 84min), McGugan, Adebola(McGoldrick 64min), , Blackstock
Subs not used: Darlow(GK), Wilson, McCleary, Thornhill
Bookings: Moussi 54min, Blackstock
Scorer: McGugan 68min
Barnsley: Steele, McEveley, Shackell(C), Foster, Trippier(Hassell 64min), Doyle, O'Brien(Wood 80min), Lovre(Butterfield 80min), Hammill, Colace, Gray
Subs not used: Preece, Potter, Arismendi, Dickinson
Bookings: Doyle 67min, Hassell 67min
Scorers: Doyle 5min, Gray 56min pen, Butterfield 87min,
Referee: P Crossley
Attendance: 12,844 Away attn: 2443