Match ends, Millwall 3, Everton 2.
Murray Wallace scored a dramatic 94th-minute winner to earn Millwall a famous FA Cup fourth-round win over Everton at The Den.
Everton led when keeper Jordan Archer failed to hold Richarlison's strike before Lee Gregory's looping header levelled the scores.
Cenk Tosun restored the visitors' lead only for Jake Cooper to equalise with a controversial goal off his arm.
Wallace slotted the winner after Shaun Hutchinson's downward header.
- Watch all the FA Cup goals and highlights
- What happened in the FA Cup on Saturday?
- Millwall-Everton: How you rated the players
- Man slashed in face during brawl before Millwall v Everton
There were wild scenes at the final whistle as jubilant Lions boss Neil Harris joined his players on the pitch and Millwall's fans gave their battling team a standing ovation.
The second-tier club might have needed a moment of fortune to equalise a second time but they showed tremendous character after twice falling behind to make Monday's fifth-round draw.
Toffees punished for poor defending from set-pieces
Everton, without a major trophy since 1995, will feel aggrieved Millwall's second equaliser was allowed to stand.
The visitors were furious after Cooper used his arm to nudge the ball over the line.
However, with no video assistant referee (VAR) in operation, referee Michael Oliver allowed it after consulting one of his assistants.
Ironically, VAR is used at all Premier League grounds in the FA Cup and Cooper's goal would almost certainly have been ruled out if the tie had been at Goodison Park.
Yet Toffees boss Marco Silva, who named a strong side for the tie, will be just as upset with his side's poor defending.
All of Millwall's goals came after set-pieces, while two came right at the end of each half.
In addition, Everton managed just three shots on target against a Millwall team 19th in the Championship table.
Although their first goal came from a mistake, Tosun produced a clever finish to put his side 2-1 up.
However, Everton, who have now lost four of their past six games, paid the price for some suspect defending and have kept a clean sheet in just one of the past 12 league and cup games.
Gutsy Millwall claim another Premier League scalp
Millwall might be struggling in the second tier but they have now won their past five home matches against Premier League opposition in the FA Cup.
Having beaten Aston Villa in 2013, the Lions defeated Bournemouth, Watford and Leicester on their way to the quarter-finals in 2017.
This was another spirited cup performance by Harris' team as they twice came from behind to win in atrocious conditions in Bermondsey.
A swirling wind and driving rain made it difficult for both teams but Millwall's gutsy display was summed up by Wallace's winner with just seconds remaining.
The former Huddersfield defender calmly beat Jordan Pickford from the edge of the six-yard area after Hutchinson's header from Shaun Williams' free-kick.
Man of the match - Lee Gregory (Millwall)
'We'll take that' - what was said
Millwall manager Neil Harris: "We dug in, stayed in the game and competed with them, and we got the shape spot on for the majority of the game.
"We knew we'd have to defend well, but also use the ball wisely and create chances. We had to be clinical, and fortunately for us we did enough to keep them down to two goals and have the anticipation in the final third."
Millwall defender Jake Cooper on his controversial goal: "My arm was alongside my body but you would have to give every penalty that hit your arm if you are going to pull that up.
"We'll take that and luckily we got the winner."
Everton manager Marco Silva: "Two points made the difference: we have to be more mature, taking the responsibility on the pitch, and the decision on their second goal.
"You can work 20 or 30 hours on the same things, set-pieces, but you have to take your responsibility onto the pitch with you.
"We knew what they would do before the match but we gave them what they wanted. And if the competition has VAR for some stadiums then it has to have it in all."
Late, late show - the stats
- Murray Wallace's goal (93 mins 56 seconds) is the latest to be scored against a Premier League club in the FA Cup this season.
- Everton have conceded at least three goals in an FA Cup match against a side from a lower division for the first time since January 2001.
- There were just 147 seconds between Cenk Tosun firing Everton into a 2-1 lead, and Jake Cooper equalising for Millwall.
- Both Richarlison and Gylfi Sigurdsson have netted 10-plus goals in all competitions for Everton this season.
- Cooper has been directly involved in 10 goals (four goals and six assists) in 17 home games for Millwall this season - more than any other defender in England's top four divisions.
- Tosun is the first Turkish player to score an FA Cup goal since Colin Kazim-Richards did so for Blackburn against Arsenal back in February 2013.
Millwall will hope to use this win as a springboard for their league form and return to action next Saturday when they entertain Rotherham United in the Championship (15:00 GMT). Everton need a quick response and are back in action on Tuesday when they travel to the Premier League's bottom club Huddersfield (19:45).
- 25M WallaceBooked at 67mins
- 22O'BrienSubstituted forSkalakat 87'minutes
- 11FergusonSubstituted forMorisonat 89'minutes
- 9GregorySubstituted forPearceat 90+6'minutes
- 13MinaSubstituted forZoumaat 45'minutes
- 8André Gomes
- 17GueyeBooked at 76mins
- 31LookmanSubstituted forWalcottat 79'minutes
- 10G Sigurdsson
- 29Calvert-LewinSubstituted forTosunat 65'minutesBooked at 76mins
- Michael Oliver
- Shots on Target
Second Half ends, Millwall 3, Everton 2.
Substitution, Millwall. Alex Pearce replaces Lee Gregory.
Goal! Millwall 3, Everton 2. Murray Wallace (Millwall) left footed shot from very close range to the bottom right corner following a set piece situation.
Foul by Lucas Digne (Everton).
Steve Morison (Millwall) wins a free kick on the right wing.
Attempt saved. Gylfi Sigurdsson (Everton) right footed shot from outside the box is saved in the top centre of the goal.
Richarlison (Everton) wins a free kick in the defensive half.
Foul by Mahlon Romeo (Millwall).
Substitution, Millwall. Steve Morison replaces Shane Ferguson.
Offside, Millwall. Jiri Skalak tries a through ball, but Shane Ferguson is caught offside.
Substitution, Millwall. Jiri Skalak replaces Aiden O'Brien.
Delay over. They are ready to continue.
Delay in match Ryan Leonard (Millwall) because of an injury.
Foul by Idrissa Gueye (Everton).
Ryan Leonard (Millwall) wins a free kick on the left wing.
Attempt blocked. Richarlison (Everton) right footed shot from outside the box is blocked. Assisted by Idrissa Gueye.
Offside, Millwall. Shaun Hutchinson tries a through ball, but Jake Cooper is caught offside.
Substitution, Everton. Theo Walcott replaces Ademola Lookman.
Foul by Michael Keane (Everton).