Liam Feeney's 92nd-minute strike helped Millwall complete a late comeback to dump Southampton out of the FA Cup.
Millwall dominated the early stages and James Henry teed up Liam Trotter to fire in from the edge of the box.
But Southampton levelled when Adam Lallana slid the ball past David Forde.
Lallana hit the bar with a free-kick before Rickie Lambert controlled on the edge of the box and finished. But Dany N'Guessan's bullet header made it 2-2 before Feeney's stunning winner.
The London side had the better of the first 35 minutes and deserved their lead as Trotter finished. Millwall should have doubled their advantage but Ryan Mason curled a shot into the side-netting.
DID YOU KNOW?
- This victory for Millwall ended Southampton's 10-game unbeaten run against them.
N'Guessan fired into the side-netting as Millwall continued to press before Lallana fashioned an equaliser in the 35th minute against the run of play as he danced past the visitors' defence to fire past Forde.
Saints continued to press in the second half as Lallana struck the bar with his free-kick. Millwall, though, were still providing a threat and Saints had goalkeeper Bartosz Bialkowski to thank for keeping the scores level, stopping James Henry and Trotter efforts.
Saints returned to the attack after a brief period under the cosh, with Tadanari Lee, substitute Rickie Lambert and Lallana all coming close.
Lambert fired home Southampton's second, seemingly putting Nigel Adkins' men on course for victory, before N'Guessan headed home a superb Henry cross and then Feeney struck home at the death.
Southampton manager Nigel Adkins: "Obviously we wanted to win the tie and we felt we had enough on the pitch to go and do that. When you get yourselves 2-1 in front you should go and see the game out.
"Ben Reeves had a goal disallowed which was actually a very good goal and wasn't offside so the linesman made a mistake on that.
"But the three goals we conceded and a few opportunities we presented Millwall summed up the way we have conceded goals this season. It is not acceptable."
Millwall manager Kenny Jackett: "It was an excellent game. We played our part.
"We caused them lots of problems. I think both sides went for it and from a neutral's point of view I am sure it was an excellent game.
"If we can do that against a side that has been as successful as Southampton, we should be able to take that bit of confidence from that win into our league form against Derby County and Brighton away."
- 21 Bialkowski
- 02 Richardson
- 03 Harding
- 06 Fonte
- 16 Martin
- 10 Guly Booked (Lambert - 54' )
- 14 Hammond
- 18 Chaplow (Reeves - 60' )
- 20 Lallana
- 33 De Ridder (Barnard - 77' )
- 19 Lee
- 01 Davis
- 15 Jaidi
- 28 Reeves
- 32 Stephens
- 30 Ward-Prowse
- 07 Lambert
- 09 Barnard
- 01 Forde
- 02 Dunne
- 03 Craig
- 16 Barron
- 18 Ward
- 06 Trotter
- 14 Henry
- 32 Mason
- 44 Wright
- 22 N'Guessan (Feeney - 84' )
- 37 Kane
- 13 Allsopp
- 21 Smith
- 28 McLaren
- 12 Hackett
- 15 Feeney
- 09 Marquis
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +1:15 Goal scored
Goal! - Liam Feeney - Southamp'n 2 - 3 Millwall Liam Feeney finds the back of the net with a goal from long range to the top right corner of the goal. Southampton 2-3 Millwall.90:00 +1:01
Free kick awarded for an unfair challenge on Ryan Mason by Jose Fonte. Direct free kick taken by Liam Trotter.88:34
Foul by Lee Barnard on Darren Ward, free kick awarded. David Forde takes the direct free kick.87:47
Ben Reeves fouled by Scott Barron, the ref awards a free kick. Free kick taken by Jose Fonte.87:23
James Henry crosses the ball.86:17
The ball is delivered by Adam Lallana, Lee Barnard takes a shot. Tony Craig gets a block in.85:12
Alan Dunne challenges Lee Barnard unfairly and gives away a free kick. Adam Lallana restarts play with the free kick.84:06
Free kick awarded for an unfair challenge on Liam Trotter by Dean Hammond. James Henry takes the free kick.83:19 Substitution
Substitution Dany N'Guessan leaves the field to be replaced by Liam Feeney.82:26
Effort from outside the box by Dany N'Guessan goes wide right of the target.81:48
The offside flag is raised against Ben Reeves. Indirect free kick taken by David Forde.81:26
Centre by Dan Harding, save made by David Forde.78:57
The assist for the goal came from James Henry.78:57 Goal scored
Goal! - Dany N'Guessan - Southamp'n 2 - 2 Millwall Dany N'Guessan finds the back of the net with a headed goal from inside the six-yard box. Southampton 2-2 Millwall.76:56 Substitution
Substitution Steve De Ridder goes off and Lee Barnard comes on.76:07 Goal scored
Goal! - Richard Lambert - Southamp'n 2 - 1 Millwall Richard Lambert scores a goal from the edge of the area to the bottom right corner of the goal. Southampton 2-1 Millwall.75:23
Free kick awarded for an unfair challenge on Adam Lallana by Liam Trotter. Bartosz Bialkowski restarts play with the free kick.74:52
Harry Kane takes a shot. Bartosz Bialkowski makes a save. Corner taken by Liam Trotter.73:58
Foul by Dany N'Guessan on Frazer Richardson, free kick awarded. Free kick taken by Jose Fonte.
Frazer Richardson produces a right-footed shot from just outside the box that misses to the right of the net.72:20
The ball is delivered by Frazer Richardson.70:52
The assistant referee signals for offside against Harry Kane. Jose Fonte takes the indirect free kick.70:09
Corner from right by-line taken by James Henry.70:01
James Henry produces a cross, blocked by Dean Hammond.69:17
Inswinging corner taken by Adam Lallana, save made by David Forde.69:06
Adam Lallana takes a shot. Save by David Forde.68:20
Adam Lallana produces a cross, Dan Harding takes a shot. Darren Ward gets a block in.67:38
The ball is delivered by Tadanari Lee, Tony Craig makes a clearance.66:43
The ball is crossed by James Henry, clearance by Aaron Martin.64:19
The ball is sent over by Alan Dunne, Aaron Martin manages to make a clearance.63:06
Richard Lambert has an effort at goal from just outside the area which goes wide of the left-hand post.61:32
Effort from deep inside the area by Tadanari Lee misses to the left of the goal.61:07
Adam Lallana produces a cross, Tony Craig makes a clearance.59:55 Substitution
Substitution Ben Reeves comes on in place of Richard Chaplow.59:36
The ball is swung over by Scott Barron, Headed effort from close range by Dany N'Guessan goes wide left of the goal.58:05
Steve De Ridder takes a shot. Blocked by Dany N'Guessan.55:06
Long range effort by Harry Kane goes wide right of the net.52:48 Substitution
Substitution Richard Lambert on for Guly Do Prado.52:48
Outswinging corner taken right-footed by James Henry, Foul by Tony Craig on Jose Fonte, free kick awarded. Bartosz Bialkowski restarts play with the free kick.51:53
James Henry takes a shot. Save by Bartosz Bialkowski. Corner taken right-footed by James Henry to the near post, Liam Trotter takes a shot. Save by Bartosz Bialkowski.50:45
James Henry concedes a free kick for a foul on Dan Harding. Dan Harding takes the free kick.49:47
Guly Do Prado concedes a free kick for a foul on Alan Dunne. Direct free kick taken by Alan Dunne.49:34
Centre by Steve De Ridder, Alan Dunne manages to make a clearance.48:34
Foul by Liam Trotter on Tadanari Lee, free kick awarded. Adam Lallana produces a shot on goal direct from the free kick.47:53
Free kick awarded for a foul by Guly Do Prado on Josh Wright. Ryan Mason takes the direct free kick.47:04
Tadanari Lee produces a left-footed shot from deep inside the penalty area which goes wide of the left-hand post.45:49
Adam Lallana produces a left-footed shot from just outside the box that goes wide left of the goal.45:24
Foul by Steve De Ridder on Scott Barron, free kick awarded. Tony Craig restarts play with the free kick.45:01
The second half has started.45:00 +1:29 Half time
Half Time The ref blows to signal half-time.45:00 +0:56
The official flags Richard Chaplow offside. Free kick taken by David Forde.44:47
Unfair challenge on Richard Chaplow by Ryan Mason results in a free kick. Free kick taken by Dan Harding.44:30
A cross is delivered by James Henry, Guly Do Prado makes a clearance.43:58
Outswinging corner taken right-footed by James Henry from the right by-line, clearance by Jose Fonte.42:08 Booking
Booking Guly Do Prado receives a yellow card for unsporting behaviour.42:00
Guly Do Prado gives away a free kick for an unfair challenge on Ryan Mason. James Henry takes the free kick.40:49
Free kick awarded for an unfair challenge on Jose Fonte by Harry Kane. Dean Hammond takes the direct free kick.39:43
A cross is delivered by Steve De Ridder, Guly Do Prado takes a shot. Save made by David Forde.38:42
Foul by Jose Fonte on Harry Kane, free kick awarded. Scott Barron takes the direct free kick.36:54
The ball is sent over by Frazer Richardson, save made by David Forde.36:00
A cross is delivered by Richard Chaplow, save made by David Forde.34:55
Frazer Richardson provided the assist for the goal.34:55 Goal scored
Goal! - Adam Lallana - Southamp'n 1 - 1 Millwall Adam Lallana finds the back of the net with a goal from inside the penalty area to the bottom left corner of the goal. Southampton 1-1 Millwall.34:08
The ball is delivered by Alan Dunne, Shot from close range by Dany N'Guessan misses to the left of the target.31:29
Unfair challenge on James Henry by Guly Do Prado results in a free kick. James Henry takes the free kick.29:48
Shot by Steve De Ridder from outside the box goes high over the crossbar.28:22
The ball is delivered by Frazer Richardson, Tony Craig manages to make a clearance.26:28
The ball is delivered by James Henry.26:13
The ball is delivered by James Henry, Jose Fonte makes a clearance.25:02
Harry Kane takes a shot. Save by Bartosz Bialkowski.22:29
Frazer Richardson delivers the ball.21:05
Ryan Mason produces a right-footed shot from deep inside the penalty area which goes wide of the left-hand post.20:07
James Henry crosses the ball, blocked by Dan Harding.17:47
Free kick awarded for an unfair challenge on Dan Harding by James Henry. Steve De Ridder restarts play with the free kick.16:24 Goal scored
Goal! - Liam Trotter - Southamp'n 0 - 1 Millwall Goal scored by Liam Trotter from just outside the box to the bottom right corner of the goal. Southampton 0-1 Millwall.14:38
Harry Kane is flagged offside by the assistant referee. Free kick taken by Bartosz Bialkowski.14:21
Ryan Mason takes a shot. Liam Trotter gets a block in.13:28
The ball is crossed by Scott Barron, clearance made by Frazer Richardson.12:34
Dan Harding gives away a free kick for an unfair challenge on James Henry. Direct free kick taken by Scott Barron.11:41
Josh Wright fouled by Dean Hammond, the ref awards a free kick. Tony Craig takes the direct free kick.9:00
The ball is delivered by James Henry, Dan Harding gets a block in.7:05
Dany N'Guessan concedes a free kick for a foul on Dean Hammond. Bartosz Bialkowski takes the direct free kick.5:32
The ball is delivered by James Henry, save made by Bartosz Bialkowski.4:59
The ball is swung over by Adam Lallana, Scott Barron manages to make a clearance.4:15
Free kick awarded for an unfair challenge on Ryan Mason by Guly Do Prado. David Forde restarts play with the free kick.1:10
Steve De Ridder produces a left-footed shot from just outside the penalty box that misses to the left of the goal.0:00
The referee gets the match started.
Live data and text provided by our data suppliers