Match ends, Millwall 1, Barnsley 2.
Patrick Schmidt's late goal gave Barnsley their second win in a row as they won at Millwall to move off the bottom of the Championship.
Conor Chaplin opened the scoring in the 40th minute, striking a superb first-time finish from a low cross by Jacob Brown.
But Millwall looked to have broken the visiting fans' hearts when they equalised in the 85th minute after Matt Smith's header was turned in by Aiden O'Brien on the line.
However, Tykes substitute Luke Thomas stole the ball from Jed Wallace in stoppage-time before crossing to Schmidt, whose header gave Barnsley all three points and only their fourth win of the season.
Millwall were unbeaten in their previous seven league games (W4 D3) and they had the better of the early chances, with Jake Cooper unable to turn home a cross at the back-post in the sixth minute.
And the Lions defender came close again, putting a header from an inswinging free-kick narrowly wide mid-way through the opening half.
Barnsley opened the scoring against the run of play as Chaplin made it seven goals in seven games, and nearly doubled their advantage five minutes later when he forced a fine save from Millwall keeper Bartosz Bialkowski.
The hosts were nearly level just before the hour mark as ex-Tyke Tom Bradshaw struck an effort narrowly over the crossbar, but when they did find an equaliser it looked to be just rewards for their display.
Barnsley, though, had other ideas as Schmidt scored his second for the club, heading home to delight his fellow Austrian, boss Gerhard Struber, as they moved to one point off safety in the Championship table.
Millwall manager Gary Rowett told BBC London:
"Yes I'm disappointed, obviously it's a frustrating performance. It was not as high as the standards we've set so far. If you look at the first 30 minutes I thought we were really comfortable, I thought we were the best team by far.
"In the second half we huffed and puffed, we didn't really go very far with any sort of precision. My frustration is, when you get back into the game in the 87th minute, you take the point.
"You're not happy with it but you keep the unbeaten run going."
Barnsley boss Gerhard Struber:
"For us it's a very, very important victory, it's good for our soul, for our mind and for our self-confidence. We created a very good second half. In the first half we had some problems on the ball, our positioning was not clear and we gave away simple balls.
"After the equaliser, we had the mentality to win and this is a special moment for me, for my team and the whole club. He [Chaplin] is in top form, we're very happy we have Conor, we have so many good players, big talents in my team.
"We didn't play like a relegation-threatened team, we played very well, and I hope we can follow that up on Boxing Day - for now, we'll have a merry Christmas!"
- 7J WallaceBooked at 75mins
- 16MolumbyBooked at 88mins
- 26SkalakSubstituted forO'Brienat 60'minutes
- 9BradshawSubstituted forMahoneyat 72'minutes
- 23BödvarssonSubstituted forSmithat 60'minutes
- 5DiabyBooked at 85mins
- 6AndersenBooked at 23mins
- 24HalmeBooked at 86mins
- 10BähreSubstituted forThomasat 72'minutes
- 9WoodrowBooked at 82minsSubstituted forSchmidtat 84'minutes
- Jarred Gillett
- Shots on Target
Second Half ends, Millwall 1, Barnsley 2.
Goal! Millwall 1, Barnsley 2. Patrick Schmidt (Barnsley) header from the centre of the box to the bottom left corner. Assisted by Luke Thomas with a cross following a corner.
Corner, Barnsley. Conceded by Bartosz Bialkowski.
Attempt saved. Alex Mowatt (Barnsley) left footed shot from outside the box is saved in the top left corner. Assisted by Aapo Halme.
Attempt missed. Jake Cooper (Millwall) header from the left side of the six yard box is just a bit too high. Assisted by Jed Wallace with a cross following a set piece situation.
Foul by Clarke Oduor (Barnsley).
Connor Mahoney (Millwall) wins a free kick on the right wing.
Foul by Patrick Schmidt (Barnsley).
Jake Cooper (Millwall) wins a free kick in the defensive half.
Mads Andersen (Barnsley) wins a free kick in the defensive half.
Foul by Matt Smith (Millwall).
Jayson Molumby (Millwall) is shown the yellow card.
Aapo Halme (Barnsley) is shown the yellow card for hand ball.
Hand ball by Aapo Halme (Barnsley).
Bambo Diaby (Barnsley) is shown the yellow card.
Goal! Millwall 1, Barnsley 1. Aiden O'Brien (Millwall) header from the left side of the six yard box to the centre of the goal. Assisted by Matt Smith.
Attempt blocked. Matt Smith (Millwall) header from the centre of the box is blocked. Assisted by Shane Ferguson with a cross.
Substitution, Barnsley. Patrick Schmidt replaces Cauley Woodrow.
Cauley Woodrow (Barnsley) is shown the yellow card.