Without a single shot on target, Forest were thoroughly beaten by a pacey Millwall side.
It was a confident first half from Millwall, who had much of the possession and most of the chances. Forest's passing was poor and they struggled to keep hold of the ball going forward.
And it was more of the same in the second half with Forest beaten by the pace of Millwall, who doubled their lead in the 77th minute.
Millwall started the game brightly, troubling the Forest defence from the outset.
They appealed for a penalty when Darius Henderson was brought down by Andy Reid and seconds later a well-timed challenge by Chris Cohen prevented James Henry from getting a shot in.
And they had taken the lead after seven minutes from a well-delivered corner in to the near post and the ball possibly went in off a Forest player but it was given to Henderson.
Forest's first chance of the game came 15 minutes in when Jonathan Greening knocked the ball forward to Reid who turned and fired, beating the keeper, but the ball went just wide of the left-hand post.
And they were gifted a chance when an error by the Millwall keeper allowed Joe Garner to beat him to the ball. He put in a low cross to Robbie Findley as he slid in but Darren Ward got back well to clear the danger.
A good spell from Forest was interrupted by a quick break by Millwall and Lee Camp had to stretch full length to reach Hamer Bouazza's shot and claim the ball before John Marquis could get to it.
A strong back pass from Chris Gunter put Camp under pressure and then a mistake by Luke Chambers gave Millwall possession in Forest's box, but they were let off by a last ditch tackle by George Boateng.
Forest were again sloppy at the back, giving Millwall a chance just before the half time whistle, but Henry sent the ball wide.
Forest looked brighter at the start of the second half but were still a gear slower than Millwall.
Forest showed what they could do with a bit of pace when they pushed forward and Cohen drilled the ball low to near post where Findley got a touch but it hit the outside of the post and went out for a goal kick.
There was a straight swap up front on the hour mark with Garner being replaced by Marcus Tudgay.
A good free kick by Bouazza from 35 yards out forced a good save from Camp who parried the ball and Cohen turned it away to safety.
Reid was the second Forest player to be substituted, with Radi Majewski coming on in the 73rd minute.
After some good possession, Forest were again caught out by Millwall's pace with substitute Dany N'Guessan breaking quickly and putting in a perfect low cross to Liam Trotter who put the ball away at the back post to go two up.
Again Millwall broke with Trotter getting through to shoot at a tight angle, but Camp was able to save at the near post.
They came close to a third when N'guessan got past Chambers to send the ball into the box, where it found Mkandawire who was unable to control the ball and it went out off the post.
Forest: Camp, Gunter, Morgan, Chambers(C), Cohen, Boateng, Greening, Reid(Majewski 73min), McGugan,Garner(Tudgay 60min), Findley
Subs not used: Smith, Lynch, Maloney,
Bookings: Boateng 23min
Millwall: Forde, Dunne, Craig, Trotter, Robinson, Ward, Bouazza, Mkandawire, Henderson(N'Guessan 60min), Marquis(Abdou 66min), Henry.
Subs not used: Mildenhall, Stewart, Hackett,
Bookings: Robinson 24min, Marquis 45min, Bouazza 63min
Scorer: Henderson 7min, Trotter 76min
Ref: G. Scott