Match ends, Millwall 2, Wolverhampton Wanderers 2.
Millwall came from behind to claim a draw as Championship leaders Wolves failed to win in the capital for the third time this season.
Wolves old boy Jed Wallace's fast break and pass set up Lee Gregory to put Millwall in front on 17 minutes.
Recalled Helder Costa then set up Diogo Jota's first-half injury time equaliser before supplying the pull-back for Romain Saiss' 25-yard strike.
But Jake Cooper levelled with a close-range header on 72 minutes.
Wolves failed to deal with a far-post corner, as Shaun Hutchinson was allowed to direct a looping header back across goal and Cooper got there first to bundle in a header.
Nuno Espirito Santo's pacesetters are now eight points clear at the top, having won eight times in a 10-match unbeaten run since losing to QPR at Loftus Road in late October - and they were also held to a goalless early season draw at Brentford.
Wolves had not conceded a goal in four matches prior to kick-off.
But, in an entertaining Boxing Day game, chances flowed at either end and Millwall, who boast one of the best home records in the bottom half of the Championship, had already gone close before Gregory's opener.
Having seen the game turned round in the space of 11 minutes either side of half-time, Neil Harris' Lions had the fight and strength of character to claw back another point on a ground where they have lost just three times in 12 matches this season.
But Wolves were close to claiming all three points in the third minute of stoppage time when home keeper Jordan Archer pushed away a Barry Douglas free-kick.
Millwall manager Neil Harris:
"Against good teams, if you switch off you're going to get punished. We switched off about three times, probably, in 90 minutes.
"We gave it a right go and our second goal was well earned. I'm really pleased with a point - no one was short-changed in the crowd, that's for sure.
"It was an excellent game of football, end to end. In some ways David Livermore - my assistant - summed it up when he said 'that's a Millwall performance'."
Wolves boss Nuno Espirito Santo:
"It's not an indifferent result, 2-2 against Millwall away from home. I knew that Millwall would be like they were.
"They've got 21 of their 27 points at home. It's a tough environment to play in. We showed a lot of character and we can be proud of ourselves.
"I enjoyed my first experience of playing on Boxing Day. We are professionals. We are ready to play in every game, every day."
- 2McLaughlinBooked at 33minsSubstituted forRomeoat 52'minutes
- 4HutchinsonBooked at 90mins
- 14J Wallace
- 6WilliamsBooked at 20mins
- 22O'BrienSubstituted forTunnicliffeat 82'minutes
- 19ElliottSubstituted forMorisonat 60'minutes
- 16CoadyBooked at 69mins
- 15BolySubstituted forMirandaat 68'minutes
- 27SaissBooked at 55mins
- 17Hélder CostaSubstituted forA N'Diayeat 81'minutes
- 7CavaleiroBooked at 7minsSubstituted forBonatiniat 45'minutes
- 4A N'Diaye
- Tim Robinson
- Shots on Target
Second Half ends, Millwall 2, Wolverhampton Wanderers 2.
Attempt missed. Matt Doherty (Wolverhampton Wanderers) header from the centre of the box is too high. Assisted by Barry Douglas with a cross following a corner.
Corner, Wolverhampton Wanderers. Conceded by Jordan Archer.
Attempt saved. Barry Douglas (Wolverhampton Wanderers) left footed shot from outside the box is saved in the bottom left corner.
Shaun Hutchinson (Millwall) is shown the yellow card for a bad foul.
Diogo Jota (Wolverhampton Wanderers) wins a free kick in the attacking half.
Foul by Shaun Hutchinson (Millwall).
John Ruddy (Wolverhampton Wanderers) wins a free kick in the defensive half.
Foul by James Meredith (Millwall).
Corner, Millwall. Conceded by Conor Coady.
Attempt missed. Alfred N'Diaye (Wolverhampton Wanderers) right footed shot from outside the box is high and wide to the left.
Attempt blocked. Léo Bonatini (Wolverhampton Wanderers) left footed shot from the left side of the box is blocked. Assisted by Rúben Neves.
Foul by Diogo Jota (Wolverhampton Wanderers).
Shaun Williams (Millwall) wins a free kick on the right wing.
Foul by Alfred N'Diaye (Wolverhampton Wanderers).
Shaun Hutchinson (Millwall) wins a free kick in the defensive half.
Rúben Neves (Wolverhampton Wanderers) wins a free kick in the defensive half.
Foul by George Saville (Millwall).
Corner, Wolverhampton Wanderers. Conceded by Mahlon Romeo.