Unai Emery's side paid the price for a defensive horror show at the Emirates Stadium to leave their hopes of qualifying for the Champions League via the domestic route hanging in the balance.
The Gunners, who can also reach the competition by winning the Europa League, fell behind to Christian Benteke's first goal for a year before Mesut Ozil equalised early in the second half.
Shkodran Mustafi's blunder allowed Wilfried Zaha to put Palace back in front.
James McArthur took advantage of more woeful Arsenal defending to make it three and, although Pierre-Emerick Aubameyang reduced the deficit, it was too late to stop Palace's first league win at Arsenal since October 1994.
Arsenal sit in fourth place, level on points with Chelsea, who will go above them if they avoid defeat against Burnley on Monday.
Arsenal's top four challenge had been fuelled by their impressive home form and their first league loss at the Emirates since the opening weekend of the season was hugely damaging.
Arsenal had won 12 of their last 13 home games in all competitions, but the end of that streak puts them in the tricky position of needing to improve their dismal away record when they travel to Wolves and Leicester this week.
Emery made seven changes from Thursday's Europa League quarter-final win at Napoli in a bid to freshen up his side and, as a result, Arsenal never looked in sync.
They were authors of their own downfall when Palace took the lead in the 17th minute.
Benteke won a free-kick wide on the right and when it was curled in, Mustafi and Konstantinos Mavropanos both stood watching as Benteke thundered past them to head home from close-range.
It was the much-maligned Benteke's first goal since he scored against Leicester in April 2018, ending the Belgian striker's 19-game drought in his 200th Premier League appearance.
Mustafi was guilty of appealing for offside rather than following Benteke for the goal and the centre-back produced another costly miscue moments later when he headed over from close-range.
Day to forget
It was that kind of afternoon for Arsenal, who felt Palace's Aaron Wan-Bissaka should have conceded a penalty when he blocked a cross with his hands.
Zaha says he wants to leave to play in the Champions League next season and the forward gave a glimpse of his class when he accelerated away for a cross that Benteke ballooned over the bar.
Emery sent on Alex Iwobi and Ainsley Maitland-Niles at half-time, and the changes helped Arsenal draw level two minutes after the restart.
Iwobi slipped a pass to Alexandre Lacazette on the edge of the area and the Arsenal forward picked out Ozil, who beat Vicente Guaita with a fine strike at his near post.
But Mustafi's day to forget hit a new low in the 61st minute as Palace went back in front after another mistake from the German.
When Benteke flicked a header towards the Arsenal area, Mustafi seemed unware of Zaha's presence behind him.
Holding out his arms to indicate the ball would run to keeper Bernd Leno, he bizarrely allowed the Ivorian to run past him and clip a cool finish into the far corner.
Shell-shocked Arsenal crumbled again as Palace made it three in the 69th minute.
Having already won at Manchester City in December, Roy Hodgson's side were on course for another famous scalp when Scott Dann nodded goalwards and McArthur headed past Leno.
Aubameyang capped an incisive burst with his 24th goal of the season in the 77th minute.
But it was too late to spare Arsenal's blushes as Matteo Guendouzi wasted their last chance with a weak finish.