In spite of a superb performance and no less than 14 shots on target, Nottingham Forest had to be satisfied with yet another 1-1 draw.
After going a goal down in the fourth minute, Forest squandered the chance to equalize just minutes later from the penalty spot and in spite of producing some good chances they failed to produce an equalizer in the first half.
Forest dominated much of the second half and were finally rewarded with an equalizer ten minutes from time.
Forest, playing towards the Trent End in the first half, came close to an early goal when they won a free kick two minutes into the game, 25 yards out just to the left of centre.
Chris Cohen looked like he was going to take the shot but Paul McKenna tapped the ball across to Robert Earnshaw who sent it flying towards goal. He almost caught David Forde out, but the Millwall keeper managed to dive to his left and palm the ball away.
But it was Millwall who took the lead on the fourth minute when Danny Schofield's cross found Steve Morison who flashed a header across the face of goal and into the bottom right hand corner.
Forest had the chance to equalize just four minutes later when they won a penalty after Nathan Tyson was clearly taken out by Alan Dunne but Dexter Blackstock blasted the ball over the crossbar.
Former Forest player, Neil Harris came close to getting a second for Millwall when he spotted Lee Camp out of his goal and the Forest keeper had to back-track quickly to tip the ball over the bar for the first corner of the game.
Tyson showed his pace when he burst into the Millwall penalty area and Forde had to react quickly to block his effort.
A lightening fast break by Millwall saw them threaten again, but this time Morison's effort went over the crossbar.
There was a blow for Forest when Robert Earnshaw limped off in the 25th minute with a hamstring injury, being replaced by Paul Anderson.
When the game re-started Tyson, who had moved up front with Blackstock, got away from Darren Ward before turning and shooting at a tight angle, but the ball went into the side netting.
Morison caused problems for Forest again when he got on the end of a good cross and his header was only just over the crossbar.
Forest finished the half strongly and a curling effort by Cohen in stoppage time caused Forde to dive to his right and stretch his arm out to palm the ball away.
Two great headers by Wes Morgan ten minutes into the second half still failed to produce a goal for Forest. The first, from Ryan Bertrand's cross, was tipped over by Forde for a corner. Blackstock tried a shot from Cohen's ball in before the ball found Morgan on the right and he headed down only to see his effort cleared.
Forest continued to throw everything at Millwall, who defended in numbers. A good move down the left ended up with Tyson , whose effort from the left of the penalty area forced a diving save from Forde.
A quick break by Millwall saw Camp have to punch the ball away as it came in from the left and, from the clearance, another good effort from Morison was just over the crossbar.
A triple save by the Millwall keeper prevented Forest from getting the elusive equalizer. First Forde parried a superb effort from Radoslaw Majewski before going down to block an shot from Bertrand on the rebound, followed by another save from Tyson's effort.
Lewis McGugan became Forest's second substitute of the game, coming on with 15 minutes remaining, replacing McKenna, who went off to loud applause.
Forest finally got the equalizer almost out of nowhere from a cross by Cohen that looked like it was going to go out of play. But the ball seemed to hang in the air waiting for Blackstock who rose high to head in from close range.
A quick break by Millwall almost saw them take the lead straight back when a cross by substitute Chris Hackett fell for Carter who had time to pick his spot but fortunately for Forest his shot went wide.
A superb break by Forest then gave them a chance with McGugan putting the ball through for Anderson as he ran towards the penalty spot. He chested the ball down, but couldn't quite get it under control and it went into the roof of the net.
In stoppage time McGugan made a good run down the right and held the ball up well, waiting for Anderson to make a run into the box. But in spite of his speed, he was unable to get there in time to get on the end of the cross.
Nottingham Forest: Camp, Chambers, Morgan, Wilson, Bertrand, McKenna(C)(McGugan 76min), Majewski, Cohen, Tyson(Adebola
90+2min), Blackstock, Earnshaw(Anderson 27min)
Subs not used: Darlow(GK), Lynch, Moloney, Moussi,
Bookings: Morgan 87min
Scorer: Blackstock 80min
Millwall: Forde, Dunne, Carter, Robinson(C), Schofield, Harris(Lisbie, 79min), Henry(Hackett 70min), Barron, Ward, Morison, Abdou
Subs not used: Mildenhall(GK), Craig, Mkandawire, Smith, Robinson
Bookings: Barron 74min, Dunne 78min, Morison 87min,
Scorer: Morison 4min
Referee: N S Miller
Attendance: 23,342 Away attn: 1,767