Conor Gallagher scored twice, including a sensational late goal, as Crystal Palace held off an Everton fightback to win 3-1 at Selhurst Park.
Gallagher fired in his first from close range on 41 minutes after Jordan Ayew capitalised on a misplaced Demarai Gray pass for the visitors.
Tomkins doubled the lead by slotting in Will Hughes’s corner when unmarked at the far post on 62 minutes.
Substitute Salomon Rondon gave Everton hope when he prodded in from close range after Abdoulaye Doucoure’s pass was deflected into his path.
Vicente Guaita produced a superb save to deny Anthony Gordon late on, following the Everton substitute’s surging run, and Palace capitalised in spectacular fashion.
Gallagher brilliantly curled the ball in off the crossbar in the third minute of stoppage time to seal a win that ends the Eagles’ three-match losing run.
Palace are up to 12th position on 19 points, one points more than 14th-placed Everton.
Crystal Palace: 15 Dec v Southampton (H)
Everton: 16 Dec v Chelsea (A)