Two Luka Milivojevic’s penalties were enough for Crystal Palace to prevent Arsenal extending their winning run to 12 games.
The Serbian scored from the spot just before half time after Cheikhou Kouyate was fouled by Shrokdan Mustafi to net the Eagles’ first home goal of the season.
But it was his error early in the second half that gave Arsenal a free-kick which Granit Xhaka fired like an arrow into the top corner.
Patrick van Aanholt and James McArthur failed to clear their lines before Milivojevic miscontrolled and brought down Lucas Torreira before Xhaka’s stunning strike on 51 minutes.
A second goal came in controversial style shortly after when Alexander Lacazette handballed a cross which fell to Patrick Aubameyang, who slotted home despite Wayne Hennessey’s best efforts the ball was adjudged to have crossed the line.
Palace were well worthy of their first-half lead, having gone close twice through Wilfried Zaha and Andros Townsend but were pegged back after failing to take their opportunities.
The introduction of Alexander Sorloth and Max Meyer changed things in Palace’s favour and it was the Norwegian whose run on the break saw him play in Zaha, who in turn tricked his way past Xhaka who brought him down in the 83rd minute.
Milivojevic stepped up and netted his second penalty of the game although Bernd Leno got a hand to it he couldn’t keep it out.