Match ends, Arsenal 2, Crystal Palace 3.
Arsenal's hopes of a top-four finish were dented after Christian Benteke's first goal in a year helped Crystal Palace to an excellent win which confirmed their Premier League place.
Benteke was left unmarked to head Luka Milivojevic's delivery past Bernd Leno, only for Mesut Ozil to equalise with a clever finish shortly after half-time.
However, two goals in eight minutes ended Arsenal's 10-match winning league run at Emirates Stadium.
Wilfried Zaha capitalised on a mistake by Shkodran Mustafi to restore Palace's lead and James McArthur's header made it 3-1 before Pierre-Emerick Aubameyang reduced the deficit with his 19th league goal of the season.
Sloppy Arsenal pay the price
With Manchester United on the receiving end of a hammering at Everton earlier in the day, and Tottenham losing at Manchester City the previous day, this was an ideal opportunity for the Gunners to take a big step towards securing a Champions League place.
Yet Unai Emery's side were punished for an awful defensive performance as they fell to only a second home league defeat under the Spaniard.
The marking for Benteke's goal was non-existent, Mustafi's failed attempt to block Zaha ended in embarrassment and a second Palace goal, while McArthur was also left unmarked to head home the third.
Captain Laurent Koscielny and leading scorer Aubameyang were starting their third game in eight days but this was an under-par performance by a team looking to finish in the top four for the first time in three seasons.
The Gunners monopolised possession but it required a double change at half-time to help them get back on level terms after Benteke's header separated the teams at the interval.
Alex Iwobi, one of the substitutes, was involved in Ozil's lovely equaliser, his pass finding Alexandre Lacazette to set up the German.
That should have been the signal to push on, yet Arsenal fell away and, despite a late rally which saw Aubameyang score, will fall out of the top four if Chelsea beat Burnley at Stamford Bridge on Monday (20:00 BST).
Palace find comfort away from home
Despite gathering only eight points from their first 12 games, Palace will spend a seventh successive season in the top flight after securing safety with three matches to spare.
While their home form has been disappointing, Palace have played with freedom and confidence on the road.
Having won at title-chasing Manchester City, they can now add a first win at Arsenal for 25 years to their impressive collection of away achievements.
Manager Roy Hodgson will hope Benteke can kick-on after ending a a run of 19 appearances, 25 shots and 358 days without scoring.
The Belgian, who once scored 19 goals in a Premier League season for Aston Villa, missed a glorious chance to double Palace's lead on the stroke of half-time.
It did not prove costly, Palace showing character to respond with two quick goals after Ozil's equaliser.
Scott Dann and Martin Kelly were strong at the heart of the defence, while skipper Milivojevic was involved in two of his side's three goals.
In addition, Vicente Guaita clawed away a dangerous Ozil cross and Iwobi shot straight at the Palace keeper.
Man of the match - Luka Milivojevic (Crystal Palace)
Zaha's away-day goal streak - the stats
- Wilfried Zaha has scored eight away goals for Crystal Palace in the Premier League this season - only Tottenham's Harry Kane (11) and Leicester's Jamie Vardy (10) have netted more.
- Arsenal suffered their first home league defeat in a London derby since January 2016 when they lost 1-0 to Chelsea.
- Palace avoided defeat in both league meetings with Arsenal in a campaign for the first time since 1979-80.
- Arsenal's Mesut Ozil has been directly involved in 52 goals in the Premier League at the Emirates Stadium (20 goals, 32 assists).
- Palace have scored 29 goals away from home in the Premier League this season - their most in a single campaign in the competition and joint-most overall in a top-flight season.
Arsenal play their fourth game in 10 days on Wednesday when they travel to face Wolves (19:45 BST), while Crystal Palace host Everton next Saturday (15:00).
- 20MustafiBooked at 85mins
- 27MavropanosBooked at 16minsSubstituted forIwobiat 45'minutes
- 25JenkinsonSubstituted forMaitland-Nilesat 45'minutes
- 29GuendouziBooked at 68mins
- 4ElnenySubstituted forTorreiraat 68'minutes
- 10ÖzilBooked at 63mins
- 2WardBooked at 81mins
- 7MeyerSubstituted forTownsendat 80'minutes
- 17BentekeSubstituted forJ Ayewat 78'minutes
- 3van Aanholt
- 14J Ayew
- Jonathan Moss
- Shots on Target
Second Half ends, Arsenal 2, Crystal Palace 3.
Foul by Sead Kolasinac (Arsenal).
Wilfried Zaha (Crystal Palace) wins a free kick on the right wing.
Foul by Matteo Guendouzi (Arsenal).
Aaron Wan-Bissaka (Crystal Palace) wins a free kick in the defensive half.
Delay over. They are ready to continue.
Delay in match Luka Milivojevic (Crystal Palace) because of an injury.
Matteo Guendouzi (Arsenal) wins a free kick on the right wing.
Foul by Andros Townsend (Crystal Palace).
Attempt saved. Alex Iwobi (Arsenal) right footed shot from the centre of the box is saved in the bottom left corner. Assisted by Matteo Guendouzi.
Corner, Arsenal. Conceded by Vicente Guaita.
Offside, Crystal Palace. Luka Milivojevic tries a through ball, but Jordan Ayew is caught offside.
Shkodran Mustafi (Arsenal) is shown the yellow card.
Shkodran Mustafi (Arsenal) has gone down, but that's a dive.
Attempt saved. Cheikhou Kouyaté (Crystal Palace) left footed shot from outside the box is saved in the bottom right corner. Assisted by Aaron Wan-Bissaka.
Attempt missed. James McArthur (Crystal Palace) right footed shot from the right side of the box misses to the left. Assisted by Jordan Ayew.
Attempt blocked. Jordan Ayew (Crystal Palace) right footed shot from the right side of the box is blocked. Assisted by Wilfried Zaha.
Foul by Mesut Özil (Arsenal).
Jordan Ayew (Crystal Palace) wins a free kick on the right wing.