The hosts, sitting just above the relegation zone, took the lead early on courtesy of Steve Morison’s eighth-minute strike but Forest equalised through Andy Reid.
The Lions regained their advantage after the break when Martyn Woolford struck, but on-loan midfielder Nathaniel Chalobah had the final say for the play-off-chasing visitors.
Both teams stamped their intent on the game early on, with Mark Beevers receiving a yellow card for a challenge on Chalobah.
But the hosts added bite when Morison put them ahead after the Forest defence failed to clear a long ball forward.
Morison took one touch before firing past Karl Darlow in the Forest goal from 20 yards – his first goal since September.
Martyn Waghorn had the chance to double the hosts’ lead but his shot was saved by the feet of Darlow.
Forest were content to play a short passing game yet could not find their way past a resolute Millwall defence, who had conceded the second highest number of goals in the Championship coming into the game.
Millwall thought they should have had a penalty when Lee Martin was bundled down by Greg Halford, but the referee awarded the home team a corner instead.
The home fans were stunned into silence, though, when Reid scored Forest’s equaliser, as the captain’s speculative effort from 30 yards sailed past David Forde and into the bottom corner.
Minutes later Jamie Mackie squandered the chance to put Forest ahead as he blazed his shot over the bar from close range.
The former QPR striker was made to pay after the interval when Woolford put Millwall back ahead just before the hour mark.
The midfielder picked up Morison’s flick-on and comfortably beat Darlow across his body.
Millwall again had their penalty pleas turned down after Jack Hobbs appeared to bring down Waghorn, the referee waving away the protests.
The Lions had the ball in the back of the net through Liam Trotter, but Waghorn had been flagged offside in the build-up, which brought to an end a spell of dominance by the hosts.
Chalobah then equalised for the visitors on 66 minutes, rising highest from Reid’s corner to beat Forde and score his second goal of the season.
Millwall were the side pressing for the winner, though, and were awarded a free-kick on the edge of the box but Woolford’s shot sailed over the bar.
Lions boss Steve Lomas switched to three at the back and it almost paid off in the closing stages.
Morison nearly snatched the points on the brink of full-time but he poked his shot past the right post from the edge of the area.