Barnsley sealed a big three points over Millwall to further enhance their survival hopes.
Sam Winnall’s header and a superb solo goal from Adam Hammill earned the Reds back-to-back home wins in the league for the first time since September.
Lloyd Isgrove had an early chance when he was put through by Ben Pearson but Millwall’s ‘keeper David Forde did well to rush out and smother his shot away.
The Reds then went in front on 12 minutes when Adam Hammill’s inswinging cross was glanced home by Sam Winnall - his third goal in two games and his tenth of the season.
Isgrove then thought he had doubled the hosts’ lead but he was adjudged to have fouled a visiting defender on his way to heading the ball past Forde.
Winnall then went close again when he surged through on goal only to be denied by a last-ditch tackle from Joe Martin inside the box.
Millwall had the best chance of the second half when sub Shane Ferguson expertly picked out Steve Morison at the back post.
Morison’s header beat Adam Davies but Alfie Mawson tracked back and excellently cleared off the line to preserve the Reds’ lead.
Barnsley then had two chances to extend their lead but Hammill’s free-kick was saved by Forde before the Ireland stopper also denied Winall with his legs.
The Reds were made to rue those misses when Millwall levelled just after the hour mark.
Joe Martin’s crisp shot struck a post and Morison was on hand to react fastest to bundle in the equaliser.
Despite that blow the hosts responded just six minutes later and what a response it was.
Hammill went on a mazy run which took him past a number of Millwall defenders before coolly slotting past Forde.
The winger almost made it 3-1 just after but Forde pulled off a fine save to keep out his curling effort.
Morison saw a looping header hit the bar right at the death but Barnsley held on for a valuable three points.