A late Stiliyan Petrov header saved the tie for Martin O'Neill's Aston Villa who were three minutes away from being dumped out of the F.A. Cup.
A 24th minute Johnny Ertl header and a 30 yard Darren Ambrose free kick either side of a James Collins equaliser almost sealed a famous victory for Neil Warnock's men, but the Villa skipper saved his side with the late header.
In front of the cameras Palace got off to a nervy start, and Villa almost took advantage when Steven Warnock was put through into the box by a clever Ashley Young pass, but as he went to shoot Claude Davis stopped him with a brilliant block.
The nerves soon settled and Palace began to claim much more of the play and absorbed a lot of the Villa pressure before Ertl tried an ambitious 30 yard drive to mark the Eagles' first chance of the afternoon.
In response Villa had an audacious penalty appeal turned down when Young was played through into the box and went down under a challenge from Nathaniel Clyne, but there was nothing there and the referee waved it away immediately.
Emile Heskey then tested Speroni's hands on 23 minutes with a turn and shot from 20 yards out but the Argentine saved comfortably.
But Palace took the lead a minute later when Ambrose's corner was met by Ertl, who managed to out jump his marker and head over a stranded Brad Friedel.
The confidence was now flowing through Palace and Danns tested Friedel with a snap shot from 20 yards that the Villa keeper took comfortably into his arms.
The scores were brought level on 36 minutes when Collins managed to steal a yard on Clint Hill and convert a Stewart Downing corner with a thumping header.
Villa pushed on and had a good chance to take a half time lead when Heskey met an Ashley Young corner with a header six yards out, but he got his angles all wrong and it flew over.
But it could quite easily have been Palace who took the lead late on in the half when Ambrose saw a swerving free kick from 25 yards punched away by Friedel.
The early stages of the second half was an even tighter affair with neither side managing to carve out much in the way of clear cut chances.
Lee tried his luck with a speculative over head kick a couple of minutes in that Friedel saw wide, while half time substitute John Carew twisted and forced Speroni into a good reflex save three minutes later
Villa were almost gifted the lead when Young fizzed in a low free kick and it screwed off Derry in the wall forcing Davis to get a vital touch to clear it away.
The half though sparked into life on 70 minutes when Nick Carle drew a free kick 30 yards out and Ambrose stepped up to fire it into the top corner. Friedel had managed to get a fingertip to it but the ball swerved at the last minute and he could only push it further into the net.
With the crowd still celebrating Ambrose almost made it 3-1 when he aimed a looping header over Friedel, who had to quickly back track to tip the effort onto the bar.
Rocked by the goal Villa suddenly added more urgency to their play and Carew thought he had brought his side level when he connected with a free kick on left only to see Speroni tip it over the bar.
But they got their equaliser thanks to a huge slice of luck when a cross into the Palace six yard box was parried on to the head of Villa striker Nathan Delfouneso and the referee gave it as a corner.
The corner was whipped into the near post and Petrov stooped low to head across Speroni.
It proved to be the last chance of the game and Palace can look forward to a replay at Villa Park on Wednesday 24th February (kick of 7.45pm).
Att: 20,486 (2,100)
There is one change in the starting XI who lost to Swansea on Tuesday night, with Claude Davis replacing a cup tied Lee Hills. Matt Lawrence has recovered sufficiently from his hamstring strain to take a place on the bench, while goalkeeper Charlie Mann is also included in the seven substitutes
Crystal Palace: 1. Julian Speroni, 2. Nathaniel Clyne, 3. Clint Hill, 4. Shaun Derry, 7. Darren Ambrose, 8. Neil Danns, 10. Nick Carle , 19. Alan Lee (18. Calvin Andrew, 90+2), 20. Danny Butterfield, 22. Johnny Ertl, 24. Claude Davis
Aston Villa: 1. Brad Friedel, 2. Luke Young, 5. Richard Dunne, 6. Stuart Downing, 7. Ashley Young, 8. James Milner, 16. Fabian Delph (14. Nathan Delfouneso, 74), 18. Emile Heskey (10. John Carew, 45), 19. Stiliyan Petrov, 24. Stephen Warnock, 29. James Collins
Subs: 4. Steven Sidwell, 15. Curtis Davies, 23. Brad Guzan, 23. Habib Beye, 24. Carlos Cuellar