Millwall defender Alan Dunne fired in a dramatic equaliser in the third minute of injury-time to earn a draw which puts his side in the play-off places.
Walsall had taken a 2-0 lead with a low cross-shot from Alex Nicholls and a rising drive from Richard Taundry.
Steve Morison replied after keeper Rene Gilmartin gifted him the ball before Walsall's Matt Richards was sent off for a second bookable offence.
Morison had a header cleared off the line before Dunne scored from 18 yards.
Millwall manager Kenny Jackett told BBC London 94.9: "It's an up and down sort of day really. We gave Walsall a couple of goals and something to hang on to and that hasn't been like us.
"It's been quite some time since we've conceded two goals in a game.
"I'm pleased to say that in the end we did get a point out of it."
Live text and stats
Saturday, 6 March 2010
02 Weston (Westlake 46)
20 Richards yellow card, red card
07 Jones (Hughes 77)
11 Nicholls yellow card (Byfield 88)
18 Ward (Barron 68)
26 Abdou (Obika 78)
09 Harris (Batt 49)
Ref: HillAtt: 3,835
Attempts on target
Attempts off target
90:00+3:35 The final whistle is blown by the referee.
90:00+2:21 GOAL - Alan Dunne:Walsall 2 - 2 Millwall Alan Dunne gets on the score sheet with a goal from long range to the top right corner of the goal. Walsall 2-2 Millwall.
90:00+0:31 Chris Hackett takes a outswinging corner from the right by-line played to the near post, Richard Taundry makes a clearance.
88:55 Header by Shaun Batt from deep inside the penalty area misses to the left of the goal.
87:45 Substitution Darren Byfield on for Alex Nicholls.
87:01 The ball is delivered by Scott Barron.
84:09 Headed effort from deep inside the penalty area by Shaun Batt goes harmlessly over the crossbar.
82:15 Booking Alex Nicholls goes into the book for unsporting behaviour.
82:05 The referee blows for offside. David Forde takes the indirect free kick.
81:03 Free kick awarded for a foul by Alex Nicholls on Tony Craig. Direct free kick taken by Tony Craig.
80:13 Paul Robinson concedes a free kick for a foul on Alex Nicholls. Free kick taken by Richard Taundry.
79:43 Danny Schofield is adjudged to have handled the ball. Rene Gilmartin takes the direct free kick.
78:48 Shot from just outside the box by Alan Dunne misses to the left of the goal.
77:40 Substitution Jonathan Obika comes on in place of Nadjim Abdou.
77:40 Chris Hackett gives away a free kick for an unfair challenge on Troy Deeney. Rene Gilmartin takes the direct free kick.
76:03 Substitution Mark Hughes comes on in place of Steve Jones.
74:35 Steve Morison takes a shot. Rene Gilmartin makes a brilliant save.
70:41 Corner taken by Chris Hackett.
67:57 Foul by Shaun Batt on Richard Taundry, free kick awarded. Direct free kick taken by Rene Gilmartin.
66:44 Substitution Darren Ward leaves the field to be replaced by Scott Barron.
66:44 Inswinging corner taken by Chris Hackett, Darryl Westlake makes a clearance.
66:15 Troy Deeney concedes a free kick for a foul on Darren Ward. Free kick crossed right-footed by Chris Hackett from left wing.
63:41 Free kick awarded for an unfair challenge on Chris Hackett by Matthew Richards. Alan Dunne takes the free kick.
63:41 Sent off Matthew Richards is shown a red card.
62:46 Long distance shot from Steve Jones misses to the left of the target.
60:28 The ball is swung over by Steve Jones, clearance by Alan Dunne.
59:29 Shaun Batt takes a shot. Blocked by Jamie Vincent.
57:20 Chris Hackett takes the outswinging corner, Clayton McDonald manages to make a clearance. Alex Nicholls challenges Nadjim
Abdou unfairly and gives away a free kick. Tony Craig restarts play with the free kick.
56:40 Danny Schofield has an effort at goal from deep inside the area missing to the right of the goal.
53:53 Corner taken by Chris Hackett from the left by-line played to the near post, Matthew Richards makes a clearance.
50:38 The referee penalises Shaun Batt for handball. David Forde takes the indirect free kick.
49:12 Shot from just outside the area by Shaun Batt misses to the right of the target.
48:13 Substitution Neil Harris goes off and Shaun Batt comes on.
45:01 The second half begins.
45:01 Substitution Darryl Westlake joins the action as a substitute, replacing Rhys Weston.
45:00+4:11 The whistle is blown to end the first half.
45:00+2:30 Foul by Josh O'Keefe on Nadjim Abdou, free kick awarded. Paul Robinson takes the free kick.
45:00+1:16 Paul Robinson challenges Troy Deeney unfairly and gives away a free kick. Rhys Weston restarts play with the free kick.
45:00+0:11 Matthew Richards gives away a free kick for an unfair challenge on Chris Hackett. Chris Hackett crosses the ball in from the
43:21 Effort from outside the area by Josh O'Keefe goes wide right of the goal.
41:08 Unfair challenge on Alan Dunne by Steve Jones results in a free kick. The ball is delivered by Chris Hackett, Neil Harris
has a headed effort at goal from close in which goes wide right of the target.
40:31 Tony Craig has an effort at goal from outside the penalty area hitting the post.
36:42 The ball is swung over by Danny Schofield, Neil Harris has a headed effort at goal from deep inside the area missing to the
right of the goal.
36:42 Booking Matthew Richards receives a yellow card for unsporting behaviour.
36:40 Free kick awarded for a foul by Matthew Richards on Chris Hackett.
35:32 The referee blows for offside against Troy Deeney. David Forde takes the indirect free kick.
34:49 Corner from the left by-line taken by Julian Gray, David Forde makes a fantastic save.
32:40 Corner taken left-footed by Julian Gray from the left by-line, clearance by Paul Robinson.
31:37 Richard Taundry produces a right-footed shot from just outside the penalty box that misses to the left of the target.
30:03 Corner taken right-footed by Chris Hackett from the right by-line, clearance made by Richard Taundry.
28:50 GOAL - Steve Morison:Walsall 2 - 1 Millwall Steve Morison grabs a goal from outside the penalty box to the bottom left corner of the goal. Walsall 2-1 Millwall.
26:05 GOAL - Richard Taundry:Walsall 2 - 0 Millwall Richard Taundry scores a goal from a long way out to the top right corner of the goal. Walsall 2-0 Millwall.
19:51 Liam Trotter has an effort at goal from just outside the box which goes wide of the left-hand post.
18:13 The assistant referee signals for offside against Neil Harris. Free kick taken by Rene Gilmartin.
14:36 Danny Schofield is caught offside. Rene Gilmartin restarts play with the free kick.
13:25 Josh O'Keefe concedes a free kick for a foul on Paul Robinson. Free kick taken by Paul Robinson.
12:50 Free kick awarded for a foul by Matthew Richards on Steve Morison. Chris Hackett crosses the ball from the free kick right-footed
from right wing, Matthew Richards makes a clearance.
11:21 Assist on the goal came from Richard Taundry.
11:21 GOAL - Alex Nicholls:Walsall 1 - 0 Millwall Alex Nicholls finds the net with a goal from the edge of the penalty box to the bottom left corner of the goal. Walsall 1-0
9:32 Steve Morison concedes a free kick for a foul on Richard Taundry. Free kick taken by Matthew Richards. Alex Nicholls is flagged
offside by the assistant referee. Free kick taken by David Forde.
6:24 Free kick awarded for a foul by Steve Morison on Clayton McDonald. Rhys Weston takes the direct free kick.
3:55 Shot from long range by Nadjim Abdou goes wide of the left-hand post.
0:31 Jamie Vincent gives away a free kick for an unfair challenge on Neil Harris. Chris Hackett crosses the ball in from the free
kick, Josh O'Keefe makes a clearance.
0:00 The referee gets the game started.
Live text and data provided by The Press Association.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.