Alexandre Lacazette scored deep into injury time to rescue a point for Arsenal as club legend Patrick Vieira was denied a winning return with Crystal Palace.
The Eagles were set for three points until they failed to clear a corner and Lacazette pounced after Ben White’s effort was saved.
The Gunners started brightly and led deservedly through Pierre-Emerick Aubameyang after Vicente Guaita’s diving save to deny Nicolas Pepe.
But Palace improved – as the Gunners faded – and Christian Benteke continued his good record in games against the Gunners with the equaliser.
Thomas Partey was caught in possession by Jordan Ayew and Benteke drilled a shot into the bottom corner.
Palace again stole the ball off Arsenal to go ahead, as this time Conor Gallagher dispossessed Albert Sambi Lokonga in his own half, and the visitors broke quickly, with Odsonne Edouard hammering in a shot via the underside of the bar.
Kieran Tierney almost equalised for Arsenal late on but blasted against the bar with his shot.
And it looked as if they were going to fall short before substitute Lacazette steered home a loose ball from close range.
Arsenal were understandably aggrieved when James McArthur was only booked late in the first half for a wild kick at Bukayo Saka, who went off injured at half-time.
Arsenal move up to 12th with a sixth game unbeaten, while Palace remain 14th after a third draw in a row.