Match ends, Rotherham United 0, Barnsley 1.
Adam Armstrong hit the game's only goal to lift Barnsley within a point of the Championship play-off zone by winning the South Yorkshire derby at Rotherham.
The on-loan Newcastle striker pounced on 70 minutes, firing his left-foot shot into the bottom right corner after being put clear by Ryan Kent.
But they made light of that with a third win in four league games.
After coming from behind to beat Leeds, a second Yorkshire derby victory in seven days lifts the Tykes to seventh, while Rotherham's 20th defeat in 28 Championship games this season keeps them bottom, 11 points adrift of safety.
Danny Ward, sought after by a host of Championship clubs, could have put the Millers ahead in the first half after a quick break, but his controlled volley was superbly blocked by Angus MacDonald - and the hosts also hit the woodwork when Joe Mattock's 30-yard shot clipped the outside of the post.
But, as the first half wore on, Barnsley began to take control, going close through former Millers man Aidy White, Tom Bradshaw and Armstrong, who grazed the top of the bar.
Barnsley finally made them pay when, after giving a warning when he flashed one effort wide, Armstrong was successful with a cool finish from eight yards after Kent's defence-splitting pass.
Barnsley, who gave a debut to midfielder Matty James following his arrival on loan from Leicester City, had a chance to double their lead but Marley Watkins, who this week handed in a transfer request, saw a fierce effort tipped over by home goalkeeper Richard O'Donnell.
Rotherham United interim manager Paul Warne:
"It was a tight game. The lads went toe-to-toe with them but we need to score when we are on top.
"The game is decided by the smallest of margins. After 60 minutes, it had 0-0 written all over it. Obviously that wasn't the case.
"I don't think we played our best football and I don't think Barnsley did either. The game could have gone either way.
"I really like Barnsley. They have got pace throughout the team. Unfortunately we didn't create a chance as clear cut as theirs."
Barnsley boss Paul Heckingbottom:
"I'm pleased to come out with the three points. It was exactly like a derby. Not a huge amount of quality but a lot of endeavour, full-blooded and really competitive.
"Rotherham tried to make it difficult for us and we had to really match what they threw at us.
"There were two moments of quality from us and they mattered. One was Kent playing the ball through the full-back for Armstrong and the second was him tucking it away, which was a fantastic finish.
"As the match wore on, we got more and more on top, then finished the game the stronger."
- 17FisherSubstituted forAllanat 77'minutes
- 26BelaidSubstituted forKellyat 25'minutes
- 3MattockBooked at 16mins
- 7FordeSubstituted forBrayat 86'minutes
- 3WhiteSubstituted forEvansat 60'minutes
- 40KentBooked at 25minsSubstituted forHammillat 87'minutes
- 32ArmstrongSubstituted forWilliamsat 81'minutes
- Keith Stroud
- Shots on Target
Second Half ends, Rotherham United 0, Barnsley 1.
Corner, Barnsley. Conceded by Joe Mattock.
Attempt blocked. Adam Hammill (Barnsley) left footed shot from a difficult angle on the left is blocked.
Attempt missed. Joe Mattock (Rotherham United) left footed shot from outside the box misses to the left.
Foul by Tom Bradshaw (Barnsley).
Richard Wood (Rotherham United) wins a free kick in the defensive half.
Substitution, Barnsley. Adam Hammill replaces Ryan Kent.
Substitution, Rotherham United. Alex Bray replaces Anthony Forde.
Attempt missed. Richard Wood (Rotherham United) header from the centre of the box is too high. Assisted by Anthony Forde with a cross following a corner.
Corner, Rotherham United. Conceded by Callum Evans.
Attempt blocked. Danny Ward (Rotherham United) header from the centre of the box is blocked. Assisted by Joe Mattock with a cross.
Attempt saved. Danny Ward (Rotherham United) header from the centre of the box is saved in the centre of the goal. Assisted by Anthony Forde.
Marley Watkins (Barnsley) wins a free kick on the right wing.
Foul by Will Vaulks (Rotherham United).
Corner, Barnsley. Conceded by Richard O'Donnell.
Attempt saved. Marley Watkins (Barnsley) right footed shot from a difficult angle on the right is saved in the top centre of the goal.
Substitution, Barnsley. Ryan Williams replaces Adam Armstrong.
Attempt blocked. Adam Armstrong (Barnsley) right footed shot from the centre of the box is blocked. Assisted by Marley Watkins.
Offside, Barnsley. Josh Scowen tries a through ball, but Tom Bradshaw is caught offside.