Match ends, Millwall 1, Crewe Alexandra 1.
Millwall's Lee Gregory missed a late penalty as the League One promotion chasers drew with struggling Crewe.
In a game of three penalties, Brad Inman put the Alex ahead on 59 minutes after George Cooper had gone down under goalkeeper Jordan Archer's challenge.
Gregory then levelled from the spot five minutes later after Byron Webster was fouled by Crewe keeper Ben Garratt.
But, when Oliver Turton handled late on, Gregory missed a chance to win it, firing his penalty against the post.
That enabled Steve Davis's Crewe to extend their unbeaten run to three successive draws.
Millwall manager Neil Harris told BBC Radio London:
"I'm disappointed not to win the game. We had enough chances to win one game, if not two.
"We had three excellent chances just before half-time and obviously it didn't quite happen.
"We limited Crewe's opportunities to get at us and the opportunities they got only really came from when we gave the ball away cheaply.
"Lee Gregory is disappointed. A couple of inches to the right and his second penalty would have gone in. He will continue taking penalties for us."
Crewe Alexandra manager Steve Davis told BBC Radio Stoke:
"We are having a right go. The next step is to turn these draws into wins, but we have something to build on.
"We competed well again, played some really good football at times and created some opportunities without being quite clinical enough.
"But I am disappointed and amazed by the penalty decisions. I am amazed at what we see from 60 yards away to what they see from 10 yards away. It happened at Wigan and it has happened again.
"I think the referee was influenced by the crowd and bowed down to the pressure. And the linesman gave the second one. He was further away than the referee, who didn't see it as handball."
- 13ArcherBooked at 59mins
- 25J Wallace
- 6WilliamsBooked at 89mins
- 6NugentBooked at 63mins
- 29AjayiBooked at 86mins
- 11CooperSubstituted forNgat 90+2'minutes
- 41BakayogoSubstituted forSeagerat 80'minutes
- Chris Kavanagh
- Shots on Target
Second Half ends, Millwall 1, Crewe Alexandra 1.
Foul by Lee Gregory (Millwall).
Semi Ajayi (Crewe Alexandra) wins a free kick in the attacking half.
Substitution, Crewe Alexandra. Perry Ng replaces George Cooper.
Foul by Jed Wallace (Millwall).
Jon Guthrie (Crewe Alexandra) wins a free kick in the attacking half.
Corner, Millwall. Conceded by Jon Guthrie.
Foul by Steve Morison (Millwall).
Ben Nugent (Crewe Alexandra) wins a free kick in the defensive half.
Shaun Williams (Millwall) is shown the yellow card for a bad foul.
Foul by Shaun Williams (Millwall).
David Fox (Crewe Alexandra) wins a free kick in the attacking half.
Penalty missed! Still Millwall 1, Crewe Alexandra 1. Lee Gregory (Millwall) hits the left post with a right footed shot.
Penalty conceded by Oliver Turton (Crewe Alexandra) with a hand ball in the penalty area.
Semi Ajayi (Crewe Alexandra) is shown the yellow card for a bad foul.
Lee Gregory (Millwall) wins a free kick in the defensive half.
Foul by Semi Ajayi (Crewe Alexandra).
Attempt blocked. George Cooper (Crewe Alexandra) left footed shot from outside the box is blocked.
Corner, Millwall. Conceded by David Fox.