The match began with a lively atmosphere, with both teams creating chances early on. Jordan Pickford made a crucial save to deny Yéremy Pino, while Dean Henderson saved Jack Grealish's driven effort.
Despite the hosts' strong start, it was Crystal Palace who took the lead in the 37th minute. Daniel Muñoz scored with a calm finish after being played through by Ismaïla Sarr's pass.
The Eagles continued to press for a second goal, with Jean-Philippe Mateta having two clear opportunities to double the lead. However, he failed to capitalize on both chances, dragging one effort wide and heading a chip over the bar.
Everton equalized just before the hour mark when Iliman Ndiaye converted a penalty after a clumsy challenge on Tim Iroegbunam.
The game seemed destined for a draw until Grealish scored in the 93rd minute. Muñoz attempted to clear the ball after Henderson denied Beto, but Grealish blocked the clearance and forced the ball into the net for the winning goal.
Everton moved up to seventh place in the Premier League table, just a point behind Crystal Palace, who were beaten for the first time since mid-April.