Action from Brighton's FA Cup quarter-final at Millwall. Picture by PW Sporting Photography
Late goals from Jurgen Locadia and Solly March forced extra-time, before Albion won 5-4 on spot-kicks. Here's how we rated the players of both teams.
Got back quickly to claim the ball before Gregory after his clearance hit team-mate Duffy and rebounded towards goal. Stood up to block Wallace's shot. No chance with either goal. Crucial save in the shoot-out.
Tried to support Albion going forward but allowed O'Brien to get in front of him to make it 2-0 late on. Booked.
Blocked shots by Wallace and Williams in quick succession in the first half. Had to be strong defensively up against Gregory. Penalty appeals waved away when he was dragged back by Cooper.
A couple of crucial interceptions at 0-0. Gregory proved a handful for the Albion defence. Kept his cool to put Albion 5-4 ahead in the shoot-out.
Did okay in the first half but Wallace got away from the full-back too easily to set up Millwall's second. Booked.
Got his foot on the ball to help Albion settle after Millwall made fast start. Played key role in keeping possession.
Always available and comfortable on the ball. Shot deflected behind for a corner at 1-0.
Came into the team for the suspended Yves Bissouma in only change from last week's win at Crystal Palace. Had the best of Albion's chances with three shots saved by Martin. Subbed.
Always looked for the ball but struggled to have much of an impact. Subbed.
Little chance to get into the game in the first half. Blocked off from marking Pearce when Millwall defender made it 1-0. Missed in the shoot-out.
Worked hard. Went on a tricky run down the right on 15 minutes but failed to find a team-mate with his cross and dangerous cross saw Kayal's header saved. Subbed.
Sub changed the game. Set up Locadia to make it 2-1 late on and then equalised with a free kick deep in injury-time. Low shot pushed behind in extra-time.
Sent on after 73 minutes. Shot straight at Martin at 2-1 in injury-time.
Sent on after 73 minutes. Rifled home to make it 2-1 on 88 minutes. Late effort ruled out for offside after Montoya was flagged as he crossed.
Only keeper's second appearance of the season. A couple of smart stops but made a howler to let in March's free kick which made it 2-2 deep in injury-time.
Dangerous low cross cleared in opening seconds. Lively throughout going forward from right-back. Blazed golden opening over early in extra-time. Penalty saved in the shoot-out.
Solid in central defence. Headed Millwall into the lead when he was left unmarked to head home Williams corner.
Early header comfortably saved by Ryan. Lucky not to give away a penalty when he dragged back Duffy in the box. Blazed penalty over as Albion progressed.
Early run down the left got home fans on their feet. Strong showing at left-back until March began to cause him problems. Sent-off for late challenge on Dunk.
Came into the side in one of two changes from Tuesday's win at Birmingham. Shot charged down by Duffy early on and fired another effort straight at Ryan. Corner led to Pearce's goal.
Flashed cross-shot across goal in opening exchanges. Energetic throughout and denied by Ryan when he got clean through. Set up Millwall's second. Subbed.
Hard-working display in the middle of the park.
200th appearance for the Lions. Some nice touches and won the corner which led to Millwall's goal, before he netted the second. Subbed.
Worked hard up and down the pitch. Nice run set up opportunity for Gregory.
Held the ball up well. Sent early shot wide and volleyed another onto the roof of the goal. Also denied by Ryan. Subbed.
Sent on late in normal time. Low strike saved by Ryan early in extra-time.