After our fine recent form and rise to seventh in the Barclays Premiership this wasn't - as the scoreline suggests - the greatest of days at Selhurst Park.
We struggled to carve out a noteworthy chance and, for once, our defence was breached on our travels.
It was our first defeat on the road since Aston Villa back on November 22.
Dean Marney came in for the suspended Michael Brown as our only change from last week's loss against Chelsea with Thimothee Atouba fit again and on the bench and youngster Nicky Eyre in as substitute goalkeeper for the first time in the Premier League.
The first half was somewhat scrappy with few clear-cut chances. Jermain Defoe had one of our better efforts just six minutes into the game but volleyed from Michael Carrick's pass.
Palace attacked well down our left flank, Emmerson Boyce got away only to cut the ball back behind his supporting strikers and then Dougie Freedman broke away from our possession, beat Pedro Mendes but Michael Carrick was back to cut out his cross.
Paul Robinson's first action was a routine save from Danny Granville's free-kick after 16 minutes and Dean Marney volleyed straight at Gabor Kiraly after our best move on 19 minutes.
Tom Soares made a hash of it after another Boyce break and Reto Ziegler curled a free-kick just over after 31 minutes.
It took another 10 minutes before the next action of note and the moment of the half as Marney managed to work a yard from a half-cleared corner, drilled goalwards and Kiraly did well to palm the ball away to his right.
We suffered a blow towards the end of the half as Ziegler limped off to be replaced by Atouba.
The second half followed a similar pattern as both sides probed away from distance but it all changed after 66 minutes when Soares crossed from the left and Mikele Leigertwood guided his volley home in off the crossbar.
Suddenly, everything fell apart. Four minutes later it was 2-0 as Routledge released Granville into the box and the full-back slotted past the advancing Robinson.
Six minutes later and it was all over as Johnson cut in from the left, Mendes brought him down in the box and Palace's top scorer picked himself up to smash the spot kick down the middle.
We tried to get back into it, Mark Yeates came on for Pamarot, but Keane's free-kick and Defoe's late effort didn't trouble Kiraly and, indeed, Robinson was forced into his best save to keep our Freedman.
GUIDE TO THE ACTION
3mins: Ziegler turn of pace, pass just too far in front of Defoe.
4mins: Boyce to byline down our left, dangerous position but cut ball back behind supporting strikers.
5mins: Defoe free-kick, 22 yards, blocked by wall.
6mins: CHANCE. Bit of luck as Robinson's high kick deflected off referee to Carrick, lovely early pass released Defoe, right channel of area, hit bouncing ball early but off target.
12mins: Freedman great break from our possession, slipped past Mendes tackle on half-way and progressed to area, Carrick made up ground to block cross.
16mins: Granville curled 25-yard free-kick around wall, routine diving save for Robinson low to his right.
19mins: Best move so far, ball popped around at the back, King then lofted into Mendes, then in to Keane who laid back for Marney to volley straight at Kiraly.
20mins: YELLOW. Marney for foul on Granville.
26mins: Good work down the right from Boyce, drilled in cross that went all the way through to Soares, who made a hash of it and Edman cleared. Ball soon back in but Naybet there to head away.
29mins: YELLOW. Hughes more for reaction than foul on Keane.
31mins: Ziegler curled free-kick from 22 yards a foot over.
42mins: CHANCE. Keane slipped in Ziegler, decent position left of the goal, tried to dink it but Kiraly tipped over.
42mins: SAVE. From corner, ball not cleared, Marney worked a yard on edge of box, drilled low shot that Kiraly did well to parry to his right.
43mins: SUB. Atouba for limping Ziegler.
Injury time: Johnson chased Granville's bass down left channel, control and laid back to supporting Leigertwood, hit decent shot but always rising from 25 yards.
Half-time: Palace 0, Spurs 0
46mins: Soares early shooting chance but dragged wide from 25 yards.
52mins: Good possession, Carrick rolled ball back for Mendes to try his luck from 30 yards, decent hit but wide.
53mins: Broke up Palace possession mid-half, Defoe went for spectacular lob, hit dipper wide.
57mins: Routledge great cross with outside of right foot, Edman had to keep a close eye to clear.
59mins: Good hustle from Defoe and Marney to win possession, Keane wide to Atouba, decent cross but a couple of yards in front of Defoe.
60mins: YELLOW. Pamarot for foul on Soares.
66mins: GOAL. Soares cross from left volleyed home off underside of crossbar by Leigertwood.
Palace 1, Spurs 0
70mins: GOAL. Routledge slid ball into Granville, we looked for offside, Granville slotted past Robinson.
Palace 2, Spurs 0
72mins: SUB. Yeates for Pamarot.
77mins: PENALTY/GOAL. Johnson cut in from left, Mendes slid in, brought him down. Penalty. Johnson smashed down middle.
Palace 3, Spurs 0
82mins: SUB. Kelly for Marney.
82mins: Keane free-kick curled straight at Kiraly.
86mins: SAVE. Johnson broke through two tackles, fed Freedman, blasted shot straight at Robinson who did well to parry.
87mins: SUBS. Andrews and Borrowdale for Johnson and Soares.
89mins: Defoe tame effort straight at Kiraly.
Final score: Palace 3, Spurs 0
Crystal Palace: Kiraly, Granville, Routledge, Johnson (Andrews, 87), Freedman, Leigertwood, Hughes, Soares (Borrowdale, 87), Boyce, Hall, Sorondo. Subs: Speroni, Powell, Lakis.
Spurs (4-4-2): Robinson; Pamarot (Yeates, 72), Edman, King, Naybet; Marney (Kelly, 82), Mendes, Carrick, Ziegler (Atouba, 43); Keane, Defoe. Subs: Gardner, Eyre.
Mr C Foy.
Palace dished out our first away defeat in almost two months with a three-goal spell in 11 minutes in the second half.