A scrappy own goal won a scrappy game for Millwall as Barnsley wasted several chances to win comfortably at The Den.
Martyn Waghorn had the first attempt of the match which came on eight minutes but he could only drag well wide from 20 yards.
From the other wing Woolford picked up the ball on the corner of the box before unleashing a fierce shot across the face of goal which Butland had to parry away from danger.
On 27 minutes there was action at both ends in the space of 30 seconds. Moussi's shot was blocked by Perkins in the box and Pedersen was sent away by McCourt on the counter. With Mellis screaming in space to his left, the Norwegian opted for the shot but cracked his effort low and straight at Forde.
Butland had to make a routine catch from Waghorn's curling free-kick on 28 minutes as the game had finally come to life.
On 36 minutes Barnsley had an incredible chance to break the deadlock as Jacob Mellis went through on Forde. The midfielder's run was spotted expertly by Pedersen after receiving the ball from McCourt but Mellis could only fire straight at Forde.
Barely a minute into the second period, Mellis went close once more as this time his header deflected just past the post as he nodded at goal via the back of Hoyte from Pedersen's cross.
The hosts made the first change of the match on 57 minutes as Feeney replaced Chaplow. Another change followed as Steve Morison came on for McDonald on 61 minutes.
The tempo had picked up but both sides were making the odd mistake in possession.
Another glorious chance came Barnsley's way - this time for Scott Wiseman - as the defender latched on to Kennedy's deep cross, sneaking in at the far post, only for his poked shot to be turned away for a corner.
On 66 minutes, the Reds made their first change as Marcus Pedersen, who had put in a great shift after returning from international duty, was replaced by Jason Scotland.
The Reds were keeping the pressure on Millwall and it looked like a goal could arrive at any minute. There was a return to action for Chris Dagnall as he replaced Jacob Mellis on 69 minutes.
Just as Barnsley were in control, and although Butland had to make an unbelievable save from Morison on 75 minutes, a minute later the hosts took the lead. Feeney's delivery deflected behind Wiseman and he could only nod into his own net for a goal against the run of play.
The Reds' final change came on 80 minutes with Stephen Dawson replacing Kelvin Etuhu in the centre of the park.
Paddy McCourt took his time on the left before picking out Scotland on the edge of the box, but his crisp shot after a neat turn zipped just wide with Forde stranded on 84 minutes.
Three minutes of stoppage time didn't see another opportunity for the Reds who will be ruing several glorious chances.
Millwall: Forde, Hoyte, Robinson, Beevers, Malone, Bailey, Moussi, Chaplow (Feeney 57), Waghorn (Easter 90), McDonald (Morison 61), Woolford.
Subs: Bywater, Shittu, Smith, Martin, Easter.
Reds: Butland, Kennedy, Cranie, O'Brien, Perkins, Wiseman, Pedersen (Scotland 66), Mellis (Dagnall 69), M'voto, Etuhu (Dawson 80), McCourt.
Subs: Hassell, Cywka, Digby, Dibble.
Referee: Keith Hill
Assistant Referees: D. Leach & M. Webb
Fourth Official: C Lymer