Palace fell to their third defeat in a row and a second straight south London derby without success as high-flying Charlton edged out the Eagles by the odd goal in five.
Goals from Corie Andrews and Aaron Bissaka twice pulled Palace level but substitute Brandon Hanlan grabbed the winner just before the hour mark as Palace's winless run continues.
Having won eight of their previous nine matches, the Addicks were full of confidence and nearly took the lead after 12 minutes when former Bolton Wanderers and West Ham United man Ricardo Vaz Te rattled the crossbar with a free-kick.
But a minute later they did get themselves in front. Zakarya Bergdich slid a through-ball between the Eagles defence, allowing Josh Umerah the chance to run on it, round David Gregory and tap the ball into the net from a tight angle.
However four minutes later Palace conjured up an equaliser when Andrews scored his first goal at under-21 level when he managed to get away from the Athletic defence and drilled the ball into the back of the net.
Connor Dymond nearly grabbed a second soon after when he took aim from 20 yards but saw his effort thud off the post, and then Vaz Te was the next to be denied by the tightest of margins when he was ruled offside after smashing the ball into the top corner just before the half-hour mark.
An entertaining first period continued with Gregory forced to tip over substitute Alex Kelly’s side-footed volley from close range, and after the restart defender Aaron Barnes headed a Bergdich delivery from the left narrowly wide of the target.
But nine minutes into the second half the Addicks restored their lead. Joe Aribo whipped in a great ball from out wide and Vaz Te headed back across goal, and Umerah was in the right place to score from six yards out and complete his brace.
Once again Palace showed some fighting spirit and drew level two minutes later when a well-worked free-kick routine found Bissaka on the edge of the box and he found a gap through the hordes of players in front of him to score his fourth of the season.
They then had an excellent chance to snatch the lead right from the restart when Michael Philips broke clear and went one-on-one with Charlton keeper Dimitar Mitov but he fired wide, and they were made to pay for that miss when the hosts regained the lead on 58 minutes.
Having been on the pitch for a matter of seconds, Hanlan picked the ball up outside the area, took a touch and blasted the ball past Gregory from the edge of the box which left the Eagles keeper helpless.
The visitors pushed hard for a third equaliser and Lokilo fired over before Zeki Fryers shot straight at Mitov, however in injury-time Umerah saw his chance of a treble thwarted by the offside flag despite finding the net however Charlton held on to return to the top of the table.
Charlton: Mitov, Barnes, Thomas, Konsa, Edwards, Charles-Cook, Aribo, Bergdich (Staunton 81), Kennedy (Kelly 25), Vaz Te (Hanlan 58), Umerah. Subs not used: Prall, Assiana.
Palace: Gregory, Smith, Wynter, Woods, Fryers, Bissaka, Phillips (Akiotu 75), Dymond, Lokilo, Andrews (R. Williams 69), Berkeley-Agyepong (Davis-Wilson 69). Subs: Pain, Dreher.