Adam Armstrong's excellent penalty and Tom Bradshaw's brilliant brace keep the Reds within six points of the play-offs..
Barnsley extended their unbeaten away run to three matches after producing a stellar performance to beat Aston Villa 3-1 at Villa Park.
Despite having to soak up some early pressure from the Villans, the Reds took the lead when Marley Watkins was felled in the area by Jordan Amavi, with Adam Armstrong tucking home the resulting penalty.
Tom Bradshaw doubled the lead just before the break, sweeping home Andy Yiadom’s pinpoint cross, but Jonathan Kodjia halved the arrears instantly with a close range finish.
Bradshaw lashed in his second shortly before the hour after Villa failed to clear a Ryan Kent free kick, and could have made it four when George Moncur let fly from range, bringing another save out of Sam Johnstone.
Scott Hogan thought he had pulled a goal back late on when he slotted home from close range, but his celebrations were cut short by the assistant’s offside flag.
Victory moves the Reds up one place in the table to ninth and they remain six points outside the play-offs.
Villa made it clear early on the Reds were not going to have it all their own way, carving out a string of early chances in a bid to break the deadlock.
Jonathan Kodjia had the first chance of the game when he hooked over with his back to goal with Henri Lansbury fashioning the first shot on goal shortly after with an angled low effort from just inside the area.
Albert Adomah then sent an effort flying towards the top corner of Adam Davies’ goal but the Welshman sprung away to his left to palm the effort just over the crossbar, with the Reds able to clear the resulting corner.
Davies was called into action again on 21 minutes, this time to gather a deflected Lansbury effort but it was the Reds who took the lead four minutes later.
Marley Watkins found space on the right hand side of the penalty area and turned back inside, only to have his heel clipped by Jordan Amavi, with referee Geoff Eltringham pointing to the spot.
Adam Armstrong stepped up and rifled the ball into the top right corner of the goal, out of the reach of Villa stopper Sam Johnstone.
Minutes later, a dipping 25-yard free kick from Ryan Kent brought a flying save out of Johnstone but as the half entered its final stages, the Reds brilliantly doubled their lead.
Excellent passing across the pitch allowed Watkins to slide in Andy Yiadom out wide, and his accurate cross from the right was superbly turned home by Tom Bradshaw.
Only seconds after doubling the lead however, Villa pulled a goal back on the stroke of half time as Adomah’s dangerous ball across goal was tapped home at the far post by Kodjia.
HALF TIME: AstonVilla 1-2 Barnsley.
Kodjia fired Villa’s first chance of the half wide early in the first half after a positive run forward, but once again, it was the Reds who displayed their clinical nature in front of goal just before the hour mark.
Kent’s free kick was not properly cleared by the Villans and after Marc Roberts’ pass fell the way of Bradshaw, the Welsh striker drilled the ball into the bottom corner of Johnstone’s goal.
Shortly after that, Kodjia powered his way down the right, shrugging off substitute Gethin Jones to work a sight of goal, with Davies again denying the towering striker at the near post.
Lansbury’s attempt to slide Kodjia in four minutes later again bore no fruit as the striker’s pass into the centre was expertly cut out by George Moncur and Jack Grealish fired high and wide moments later.
Villa substitute Andre Green also forced another simple save out of Davies at his near post with George Moncur tried his luck from distance, forcing another low save from Johnstone in the process.
Watkins could not quite get on the end of a teasing Armstrong delivery nine minutes from time and in frustration, Adomah lashed over the crossbar after Davies dropped a high cross into his path.
Attendance: 26,435 (1,600 Reds).
Aston Villa: Johnstone (GK), Hutton (Bjarnason, 73’ ), Baker, Chester (c), Amavi, Adomah, Hourihane, Lansbury (Green, 73’ ), Grealish (Bacuna, 76’ ), Kodjia, Hogan.
Subs: Bunn (GK), Elphick, Gardner, Davis.
Barnsley: Davies (GK), Yiadom, Roberts (c), MacDonald, Elder (Jones, 55’ ), Watkins, Moncur, James, Kent (Williams, 85' ), Bradshaw (Hammill, 75' ), Armstrong.
Subs: Townsend (GK), Evans, A. Jackson, Hedges.