Stiliyan Petrov's late diving header saved Aston Villa from becoming the latest Premier League scalp claimed by Crystal Palace as they hit back to draw 2-2 at Selhurst Park.
The Eagles looked to be going through to the FA Cup quarter-finals when Darren Ambrose's superb 35-yard free-kick put them 2-1 ahead in the 70th minute.
But Villa captain Petrov ensured there would be a replay at Villa Park when his diving header at the near post from Stewart Downing's corner salvaged a draw for the Premier League side.
It rounded off a rip-roaring tie at Selhurst Park, as Villa twice came from behind against Championship opposition who put in the kind of performance which could just entice new owners as they attempt to battle out of administration.
Palace took the lead on 24 minutes when Johannes Ertl claimed his first goal for Palace, the Austria international heading in Ambrose's corner from close range.
That advantage didn't last long as Villa restored parity from a set-piece - their deliveries all afternoon caused the home side problems.
This time it was Downing with the inswinging corner and Danny Collins rose highest to meet the ball with a glancing header which zipped past Palace keeper Julian Speroni.
Petrov and Emile Heskey also went close from a couple more Villa corners just before the break and substitute John Carew, on for the injured Heskey, forced Speroni to parry his close-range shot in the 50th minute.
But Ambrose's delicious swerving free-kick, his 16th goal of the campaign, beat Villa keeper Brad Friedel, who got his hand to the ferocious strike but could not keep it out.
Moments later Ambrose met a Nick Carle cross with a looping header that bounced back off the woodwork.
Speroni produced a fine save in the 76th minute to tip Carew's header over the bar and, from the resultant corner, Alan Lee had to clear Collins' shot off the line.
Speroni made another top-class stop to deny Carew again in the closing moments, and it seemed that the ball came off a Villa player before it crossed the line for a corner kick, which Petrov popped up from to score a leveller.