Match ends, Millwall 1, Bolton Wanderers 1.
Millwall 1-1 Bolton Wanderers: Mark Beevers ends Bolton's 378-minute goal drought
Bolton ended their six-hour goal drought, but Millwall rescued a point late on to prevent a rare home league defeat.
Mark Beevers gave the visitors the perfect start when he stooped low against his former club to nod in Joe Williams' cross.
The defender then cleared off the line during six minutes of first-half stoppage-time caused by an injury to referee Lee Swabey.
Millwall applied pressure in the second half and got their reward eight minutes from time when substitute Jiri Skalak drilled in.
Both teams had chances to win it - Lee Gregory nodded wide for Millwall, and also had the ball in the net, but only after a foul had been awarded, while Craig Noone shot over for Bolton.
Having beaten Aston Villa, Wigan and Ipswich, Millwall were aiming for a fourth home league win in a row, something they had not achieved since April 2016 - but they were stopped in their tracks by a Bolton side hunting their first away win in three months.
Beevers' diving header brought some relief for Wanderers after 378 minutes without a goal, and Millwall were kept in it during the first half by keeper Jordan Archer - ironically only in the team because Ben Amos, on loan from Bolton, was ineligible against his parent club.
The hosts improved after the break and Skalak's equaliser kept Bolton in the bottom three and Millwall a place outside it.
Millwall manager Neil Harris:
"We didn't look Millwall-like at The Den, up and at them, 100 per cent - we were five per cent off.
"I said at half-time [that] it's about finding a different way, being brave with the ball, being brave without the ball, and using the ball a lot more on the floor.
"I thought we had some excellent passages of play second half, scored relatively late in the game, and got into some really good areas. For me, summing it up, it's definitely a point gained."
Bolton manager Phil Parkinson:
"We've not had the greatest points return in recent weeks but I thought the lads played very, very well.
"Before we scored, we should have had a penalty - you've got to see it to believe it how we didn't get the penalty given.
"All in all, it's a good day's work for us. We'd have loved to have taken all three points but in terms of the way we played I've got to be very pleased."
- 2McLaughlinSubstituted forRomeoat 61'minutes
- 4HutchinsonBooked at 45mins
- 3MeredithSubstituted forSkalakat 77'minutes
- 19ElliottSubstituted forO'Brienat 37'minutes
- 18WilsonBooked at 7mins
- 4LoweBooked at 21mins
- 11BuckleySubstituted forNooneat 69'minutes
- 28MagennisSubstituted forDonaldsonat 45'minutes
- Lee Swabey
- Shots on Target
Second Half ends, Millwall 1, Bolton Wanderers 1.
Attempt missed. Craig Noone (Bolton Wanderers) left footed shot from the left side of the box is just a bit too high. Assisted by Joe Williams following a fast break.
Foul by Aiden O'Brien (Millwall).
Andrew Taylor (Bolton Wanderers) wins a free kick in the defensive half.
Offside, Bolton Wanderers. Sammy Ameobi tries a through ball, but Clayton Donaldson is caught offside.
Attempt missed. Lee Gregory (Millwall) header from the centre of the box misses to the right. Assisted by Shane Ferguson with a cross.
Shane Ferguson (Millwall) wins a free kick in the defensive half.
Foul by Pawel Olkowski (Bolton Wanderers).
Goal! Millwall 1, Bolton Wanderers 1. Jake Cooper (Millwall) right footed shot from the centre of the box to the bottom right corner. Assisted by Jiri Skalak.
Attempt blocked. Jiri Skalak (Millwall) right footed shot from the centre of the box is blocked.
Corner, Millwall. Conceded by Andrew Taylor.
Aiden O'Brien (Millwall) wins a free kick in the defensive half.
Foul by David Wheater (Bolton Wanderers).
Foul by Jiri Skalak (Millwall).
Sammy Ameobi (Bolton Wanderers) wins a free kick in the defensive half.
Attempt blocked. Jake Cooper (Millwall) right footed shot from the centre of the box is blocked. Assisted by Shaun Williams.
Corner, Millwall. Conceded by Sammy Ameobi.
Lee Gregory (Millwall) wins a free kick in the attacking half.
Foul by Mark Beevers (Bolton Wanderers).
Substitution, Millwall. Jiri Skalak replaces James Meredith.
Shaun Hutchinson (Millwall) wins a free kick in the defensive half.
Foul by Clayton Donaldson (Bolton Wanderers).
Offside, Millwall. Ryan Leonard tries a through ball, but Lee Gregory is caught offside.
Attempt missed. Sammy Ameobi (Bolton Wanderers) left footed shot from outside the box is high and wide to the left. Assisted by Clayton Donaldson.
Foul by Shaun Hutchinson (Millwall).
Clayton Donaldson (Bolton Wanderers) wins a free kick in the defensive half.
Attempt blocked. Ryan Leonard (Millwall) right footed shot from outside the box is blocked. Assisted by Jed Wallace.
Substitution, Bolton Wanderers. Craig Noone replaces William Buckley because of an injury.
Delay over. They are ready to continue.
Delay in match William Buckley (Bolton Wanderers) because of an injury.
Corner, Bolton Wanderers. Conceded by Shaun Hutchinson.
Attempt missed. Joe Williams (Bolton Wanderers) right footed shot from outside the box misses to the left. Assisted by Jason Lowe.
Aiden O'Brien (Millwall) wins a free kick on the right wing.
Foul by William Buckley (Bolton Wanderers).
Corner, Millwall. Conceded by David Wheater.
Attempt saved. Lee Gregory (Millwall) right footed shot from the centre of the box is saved in the centre of the goal.
Attempt blocked. James Meredith (Millwall) right footed shot from the centre of the box is blocked.
Substitution, Millwall. Mahlon Romeo replaces Conor McLaughlin.
Offside, Millwall. Jed Wallace tries a through ball, but Lee Gregory is caught offside.