Match ends, Crystal Palace 2, Arsenal 2.
Crystal Palace captain Luka Milivojevic scored twice from the penalty spot to earn his side a dramatic draw and end Arsenal's 11-game winning run.
The Serb smashed in a late equaliser after Pierre-Emerick Aubameyang's controversial goal had put the visitors ahead after the break.
Milivojevic scored the opener in the first half after Shkodran Mustafi brought down Cheikhou Kouyate.
Granit Xhaka's sublime free-kick had drawn Arsenal level at 1-1.
Wilfried Zaha was brought down by Xhaka in the box with seven minutes to go and Milivojevic drilled his spot-kick into Arsenal keeper Bernd Leno's right corner, having also beaten him on that side in the first half.
Earlier in the second half, the ball appeared to brush Alexandre Lacazette's hand before it fell at the back post to Aubameyang, who poked home off the inside of the post - with the ball going over the line by just 9mm.
Before his error in bringing down Zaha to give away the late penalty, Xhaka's stunning curler had cancelled out Milivojevic's opener - which was Palace's first goal at home this season.
Zaha also hit the outside of the post before the break, while Andros Townsend dragged a shot wide.
Palace substitute Max Meyer struck over the bar from close range later in the second half and Alex Iwobi's deflected shot flew wide.
Arsenal remain fourth in the Premier League table, a point behind Manchester City, while Palace move up to 14th and three points above the relegation zone.
Palace had to wait three months for their first goal at Selhurst Park this season - before Milivojevic provided two against one of the most in-form teams in the league.
Last week, Jordan Pickford had denied him from the spot in their 2-0 defeat by Everton, but this time Milivojevic held his nerve to ensure Palace did not finish empty-handed against Arsenal.
The skipper has now scored 11 of his past 13 penalties for Palace and it was the first time he had netted since scoring against Bournemouth in April.
His first goal for Crystal Palace was also a penalty against Arsenal, in their 3-0 home win in April 2017.
Arsenal missed an opportunity to move into third place as Manchester City and Tottenham do not face each other until Monday (20:00 GMT kick-off).
The result also meant their impressive winning streak came to an end.
Gunners manager Unai Emery's request for a quicker start to the game was not met - and it was Palace who deservedly led at half-time.
But Arsenal's intensity increased in familiar fashion after the break and they thought they had completed the comeback and won all three points when Aubameyang's effort just crossed the line.
Lacazette's main involvement in the game was the build-up to that goal. His performance was disappointing and his only shot was a scuffed effort from the edge of the box.
But strike partner Aubameyang continued to provide a threat - he has now been directly involved in 22 goals in his 23 Premier League appearances for Arsenal.
Palace denied the Gunners victory but Emery's side are still just four points off the top and unbeaten in 12 games in all competitions.
Crystal Palace boss Roy Hodgson to BSports: "I'm not even happy to end up with one point especially when you see how clear the handball was. It was tough to concede an equaliser after working so hard for the 1-0 lead.
"I thought the attitude of the players and the way we got in control of the game again after going behind, it was a very deserved equaliser. I'm very happy with the performance; I'm just a bit sad it didn't give us the three points."
Arsenal manager Unai Emery on Sky Sports: "I am disappointed with the result but our work is good. We drew, it's not bad, it's better to win but looking at the game in 90 minutes it is a deserved result.
"Two penalties against us in the box is a difficult action for the defence. Xhaka is playing left-back, he is better in the middle. I will say to him nothing (about giving away the penalty)."
Arsenal next play in the Carabao Cup on Wednesday, taking on Blackpool at Emirates Stadium (19:45 GMT), while Palace travel to Middlesbrough on the same evening (20:00).
Palace return to Premier League action when go to Chelsea on Sunday (16:00). The Gunners host league leaders Liverpool on Saturday (17:30).
Match ends, Crystal Palace 2, Arsenal 2.
Second Half ends, Crystal Palace 2, Arsenal 2.
Offside, Crystal Palace. Luka Milivojevic tries a through ball, but James Tomkins is caught offside.
Matteo Guendouzi (Arsenal) is shown the yellow card for a bad foul.
Foul by Matteo Guendouzi (Arsenal).
Max Meyer (Crystal Palace) wins a free kick in the attacking half.
Lucas Torreira (Arsenal) wins a free kick in the attacking half.
Foul by Jason Puncheon (Crystal Palace).
Attempt missed. Granit Xhaka (Arsenal) left footed shot from outside the box is high and wide to the right from a direct free kick.
Lucas Torreira (Arsenal) wins a free kick in the attacking half.
Foul by Jason Puncheon (Crystal Palace).
Substitution, Crystal Palace. Jason Puncheon replaces Cheikhou Kouyaté because of an injury.
Attempt missed. Patrick van Aanholt (Crystal Palace) left footed shot from outside the box misses to the right. Assisted by Luka Milivojevic.
Foul by Aaron Ramsey (Arsenal).
Luka Milivojevic (Crystal Palace) wins a free kick in the defensive half.
Goal! Crystal Palace 2, Arsenal 2. Luka Milivojevic (Crystal Palace) converts the penalty with a right footed shot to the bottom left corner.
Penalty conceded by Granit Xhaka (Arsenal) after a foul in the penalty area.
Penalty Crystal Palace. Wilfried Zaha draws a foul in the penalty area.
Foul by Aaron Ramsey (Arsenal).
Aaron Wan-Bissaka (Crystal Palace) wins a free kick on the right wing.
Attempt missed. Patrick van Aanholt (Crystal Palace) right footed shot from outside the box misses to the right following a set piece situation.
Stephan Lichtsteiner (Arsenal) is shown the yellow card for a bad foul.
Foul by Stephan Lichtsteiner (Arsenal).
Wilfried Zaha (Crystal Palace) wins a free kick on the left wing.
Substitution, Arsenal. Aaron Ramsey replaces Pierre-Emerick Aubameyang.
Foul by Stephan Lichtsteiner (Arsenal).
Max Meyer (Crystal Palace) wins a free kick in the defensive half.
Foul by Lucas Torreira (Arsenal).
Wilfried Zaha (Crystal Palace) wins a free kick on the right wing.
Corner, Arsenal. Conceded by Mamadou Sakho.
Attempt blocked. Alex Iwobi (Arsenal) right footed shot from outside the box is blocked. Assisted by Stephan Lichtsteiner.
Attempt missed. Luka Milivojevic (Crystal Palace) right footed shot from outside the box is too high. Assisted by Cheikhou Kouyaté with a headed pass.
Substitution, Arsenal. Danny Welbeck replaces Mesut Özil.
Attempt missed. Max Meyer (Crystal Palace) left footed shot from the left side of the six yard box is just a bit too high. Assisted by Wilfried Zaha.
Attempt blocked. Wilfried Zaha (Crystal Palace) left footed shot from the left side of the box is blocked. Assisted by Andros Townsend.
Attempt missed. James Tomkins (Crystal Palace) right footed shot from outside the box misses to the left.
Max Meyer (Crystal Palace) hits the left post with a left footed shot from a difficult angle on the left. Assisted by Wilfried Zaha following a set piece situation.
Substitution, Crystal Palace. Alexander Sørloth replaces Jordan Ayew.
Foul by Stephan Lichtsteiner (Arsenal).
Wilfried Zaha (Crystal Palace) wins a free kick on the left wing.