Liam Trotter struck a stoppage-time equaliser in a dramatic finale at the New Den.
Saints thought they had won it when Rickie Lambert's deflected 30-yard free-kick dropped past David Forde in the 92nd minute.
But Trotter fired past Kelvin Davis 30 seconds later to secure a point.
Earlier, Forde had saved bravely at Lambert's feet while Davis made a fine double stop to deny Alan Dunne and Lewis Grabban.
Millwall boss Kenny Jackett told BBC London 94.9 that:
"It was an emotional rollercoaster but overall, I'm pleased with my players and the performance.
"I thought we took the game to Southampton, we created more chances and had more of the ball.
"The only criticism I can have is that we didn't take more chances when they came, four chances came to Lewis Grabban and it was one of those days for him when he missed."
Southampton manager Alan Pardew told BBC Radio Solent:
"It's definitely two [points] dropped because I've been in this game long enough to know that you don't have to control the game to win it. We got our break and we should have seen it out.
"[Lee Holmes] worked so hard and he's got quality. He's probably been ready for the last three or four weeks and I thought he's going to start dipping off this form unless I give him a start.
"To get the goal so late in front of our home fans - it looked like we'd done what we've been threatening to do. But we lacked concentration in the last play of the game and gifted them a goal."
Live text and stats
Saturday, 16 January 2010
05 Robinson yellow card
10 Grabban (Harris 68)
35 Seaborne yellow card
14 Hammond (Wotton 38)
09 Papa Waigo,
Ref: WoolmerAtt: 11,524
Attempts on target
Attempts off target
90:00+5:17 The referee blows his whistle to end the game.
90:00+4:59 The assist for the goal came from Neil Harris.
90:00+4:59 GOAL - Liam Trotter:Millwall 1 - 1 Southampton Liam Trotter finds the back of the net with a goal from the edge of the penalty box to the bottom right corner of the goal.
Millwall 1-1 Southampton.
90:00+1:52 GOAL - Richard Lambert:Millwall 0 - 1 Southampton Richard Lambert grabs a goal direct from the free kick from outside the area to the bottom right corner of the goal. Millwall
90:00+1:03 Paul Robinson gives away a free kick for an unfair challenge on Richard Lambert.
90:00+0:15 The assistant referee signals for offside against Michail Antonio. David Forde takes the free kick.
89:25 Substitution Ndiaye Papa Waigo replaces Adam Lallana.
88:29 Shot from just outside the box by Neil Harris misses to the left of the target.
85:54 Adam Lallana concedes a free kick for a foul on Darren Ward. Scott Barron takes the direct free kick.
84:15 Foul by Paul Robinson on Richard Lambert, free kick awarded. Direct free kick taken by Adam Lallana.
83:55 Shot by Neil Harris. Save by Kelvin Davis.
80:31 Neil Harris is flagged offside by the assistant referee. Kelvin Davis restarts play with the free kick.
80:01 Short corner taken by Neil Harris from the left by-line.
79:27 Shot from long range by Michail Antonio misses to the right of the target.
78:17 Free kick crossed by Scott Barron, Daniel Seaborne manages to make a clearance.
78:17 Booking Jose Fonte receives a yellow card.
77:56 Foul by Jose Fonte on Neil Harris, free kick awarded.
77:49 A cross is delivered by Michail Antonio, save made by David Forde.
75:44 Free kick awarded for an unfair challenge on Neil Harris by Jose Fonte. Neil Harris has a direct shot on goal from the free
75:29 The offside flag is raised against Michail Antonio. Free kick taken by David Forde.
74:30 Substitution Lloyd James leaves the field to be replaced by Michail Antonio.
71:25 A cross is delivered by Chris Hackett, Paul Robinson has a headed effort at goal from just inside the penalty area that misses
to the left of the target.
71:25 Booking Daniel Seaborne receives a yellow card.
71:22 Free kick awarded for a foul by Daniel Seaborne on Steve Morison.
70:39 Effort from inside the area by Chris Hackett misses to the right of the goal.
67:44 Substitution Lewis Grabban leaves the field to be replaced by Neil Harris.
66:08 Lloyd James takes a inswinging corner from the left by-line to the near post, clearance made by Chris Hackett.
63:47 The ball is sent over by Steve Morison, Lewis Grabban has a headed effort at goal from close in which goes wide right of the
63:20 Unfair challenge on Nadjim Abdou by Lloyd James results in a free kick. Free kick crossed by Chris Hackett.
62:36 Danny Schofield takes a shot. Save by Kelvin Davis. Outswinging corner taken by Chris Hackett from the right by-line played
to the near post, clearance made by Dan Harding.
60:38 Liam Trotter challenges Adam Lallana unfairly and gives away a free kick. Free kick taken by Daniel Seaborne.
58:50 Jon Otsemobor takes a shot. Daniel Seaborne gets a block in.
58:07 Effort by Lloyd James from a long way out goes over the target.
56:48 Steve Morison takes a shot. Save by Kelvin Davis.
54:42 Shot from just outside the area by Steve Morison goes over the bar.
53:15 Corner taken by Chris Hackett from the left by-line to the near post, clearance made by Daniel Seaborne.
51:14 Effort from outside the penalty area by Lloyd James goes wide left of the goal.
49:30 Paul Wotton fouled by Danny Schofield, the ref awards a free kick. Kelvin Davis takes the free kick.
48:49 The assistant referee flags for offside against Adam Lallana. Indirect free kick taken by David Forde.
47:35 Lewis Grabban has an effort at goal from deep inside the area missing to the right of the target.
46:10 The assistant referee signals for offside against Steve Morison. Indirect free kick taken by Kelvin Davis.
45:01 The referee blows his whistle to start the second half.
45:00+2:15 The match has reached half-time.
45:00+1:39 Darren Ward fouled by Richard Lambert, the ref awards a free kick. Darren Ward takes the direct free kick.
45:00+1:04 Headed effort from inside the area by Steve Morison misses to the left of the target.
44:41 Foul by Alan Dunne on Paul Wotton, free kick awarded. Free kick taken by Lloyd James.
39:30 Liam Trotter concedes a free kick for a foul on Morgan Schneiderlin. Strike on goal comes in from Lloyd James from the free
37:04 Substitution Dean Hammond goes off and Paul Wotton comes on.
36:20 The offside flag is raised against Lewis Grabban. Free kick taken by Kelvin Davis.
33:12 Adam Lallana takes a shot. Save by David Forde.
32:24 Adam Lallana is caught offside. Indirect free kick taken by David Forde.
28:04 Free kick awarded for an unfair challenge on Lloyd James by Steve Morison. Lloyd James restarts play with the free kick.
25:28 Outswinging corner taken right-footed by Lloyd James, Morgan Schneiderlin takes a shot. Save by David Forde.
24:55 Foul by Liam Trotter on Daniel Seaborne, free kick awarded. Kelvin Davis takes the direct free kick.
23:11 Corner taken by Chris Hackett.
21:53 Inswinging corner taken right-footed by Chris Hackett.
19:52 Richard Lambert concedes a free kick for a foul on Paul Robinson. Free kick taken by Chris Hackett.
18:10 Effort from the edge of the box by Lewis Grabban goes wide of the right-hand upright.
15:24 Corner taken right-footed by Chris Hackett, save by Kelvin Davis. Outswinging corner taken by Chris Hackett.
14:13 Chris Hackett concedes a free kick for a foul on Dan Harding. Daniel Seaborne restarts play with the free kick.
12:32 Free kick awarded for an unfair challenge on Scott Barron by Lloyd James. Free kick taken by Danny Schofield.
10:23 Richard Lambert takes the free kick.
10:23 Booking Booking for Paul Robinson for unsporting behaviour.
10:03 Paul Robinson concedes a free kick for a foul on Adam Lallana.
9:05 The assistant referee flags for offside against Danny Schofield. Kelvin Davis restarts play with the free kick.
7:24 Dean Hammond gives away a free kick for an unfair challenge on Danny Schofield. Alan Dunne restarts play with the free kick.
6:16 Dean Hammond fouled by Liam Trotter, the ref awards a free kick. Dan Harding takes the direct free kick.
4:21 Paul Robinson concedes a free kick for a foul on Jose Fonte. Free kick taken by Kelvin Davis.
3:54 Dean Hammond concedes a free kick for a foul on Liam Trotter. Free kick taken by Alan Dunne.
1:05 Chris Hackett gives away a free kick for an unfair challenge on Morgan Schneiderlin. Dan Harding restarts play with the free
0:00 The referee gets the match 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.