After a Charlton-dominated first half with both sides spurning good chances, the game tightened up in the second 45. But inspired by their attacking substitutes, the Eagles came to life late on and were rewarded with a decisive last-minute John-Kymani Gordon goal to clinch three points.
The Addicks began brightest, dictating possession well, and the first chance fell to powerful striker Kareem Isiaka, whose low shot was denied by Palace keeper Jacob Russell.
Nullifying Charlton's pressure, the hosts initially defended more stoutly than in last Saturday’s London derby with Millwall, against whom they conceded three early goals.
However, a loose Jude Russell pass across the defence was almost picked off by Richard Kasey before Palace centreback Martin Onoabhagbe made a perfectly-timed tackle to prevent the winger from going a one-on-one.
The host’s first chance came 10 minutes in when a free-kick was worked short to Palace captain Sean Robertson, whose floated ball was headed across the six-yard box by Kamari Parris. With Joshua Ajayi lurking, however, the Charlton defence cleared the danger.
Charlton squandered their best opening of the half just before the 30-minute mark. After Onoabhagbe headed a testing Luca French through-ball straight up, Isiaka outmuscled him on the second ball and squared to Charles Clayden eight yards out, but under pressure from keeper Jacob Russell the forward blazed over.
Shortly before half-time, Clayden again found room down the left from an incisive James Vennings pass and crossed to Isiaka, who opened his body up nicely only for his first-time effort to be brilliantly saved by the outstretched leg of Jacob Russell.
From the resulting counter-attack, smart work from Brandon Aveiro and Ajayi found Robertson free in the penalty area, but he could only scoop his cross-shot into the arms of Charlton goalkeeper Nathan Harvey and the first 45 fizzled out as a stalemate.
A scrappy start to the second half, with tackles flying in, resulted in bookings for Charlton’s Richard Kasey and Freddy Barton.
The first real opportunity of the second period fell to the visitors. Following a clumsy Parris foul, James Vennings’ teasing free-kick from the left was punched away unconvincingly by Jacob Russell, but Tetteh-Quaye Addy did well to press French’s follow-up and the rebound went harmlessly over.
With twenty minutes left and legs tiring, the game sparked into life after the rangy Parris dispossessed Euan Williams and fed Addy, the Palace forward driving into the box before firing over.
Charlton, pushing men up the pitch, at times found themselves short at the back and they needed a timely Freddy Barton slide-tackle to prevent Aveiro breaking through on goal after Robertson’s threaded ball.
Not long after, attacking substitute Gordon galvanised the Eagles well, and Lion Bello’s fine break ended with Parris side-footing wide.
With three minutes left, the imperious Onoabhagbe headed from a Robertson corner and clipped the angle of post and bar, but ultimately Palace's late pressure would pay.
Seconds before the final whistle, Aveiro caught the Charlton defence cold from their own corner and fed lively substitute David Omilabu.
Although it looked like he had overrun the ball, he dinked a cross out to fellow replacement Gordon, who chested it down, paused and fired across the 'keeper into the bottom corner to send the Eagles into raptures.
Palace: Jacob Russell, Jude Russell, Chamberlin-Gayle, Gurung, Onoabhagbe, Parris, Robertson, Addy (Omilabu 86), Ajayi (Gordon 62), Aveiro (Matthews 90+1), Bello.
Subs not used: Whitworth, Trehy.
Charlton: Harvey, Barton, Aidoo, Albion, French, Keefe, Kasey (Gody 71), Vennings, Isiaka, Allsopp (Williams 62), Clayden (Henry 84).
Subs not used: Watkins, Kirunda.