Crystal Palace blew Arsenal away with a comprehensive 3-0 Premier League victory at Selhurst Park to dent the visitors' top-four hopes and continue their own momentum under boss Patrick Vieira.

Results over the weekend had seen the Gunners leapfrogged by rivals Tottenham in the race for Champions League qualification and they were unable to respond on a night to forget for Mikel Arteta’s men.

Jean-Philippe Mateta and Jordan Ayew put the Eagles in control after 24 minutes and Wilfried Zaha’s second-half penalty added deserved gloss to the score for the hosts, who extended their unbeaten run to seven matches in all competitions and moved up to ninth in the table.

Arsenal had dropped down to fifth after Spurs’ win over Newcastle on Sunday, but they were boosted by the return of Aaron Ramsdale in south London following a minor hip injury.

Conor Gallagher’s pressing nearly forced the Gunners goalkeeper into an early mistake before Gabriel let the ball roll out for a throw, which only further lifted a home crowd on a high with a trip to Wembley on the horizon.

Palace had held Manchester City to a goalless draw three weeks ago and they made life difficult for the away side in the opening exchanges.

Chances remained few and far between initially but the deadlock was broken with the first threatening attack after 16 minutes.

A deep free-kick by Gallagher found Joachim Andersen at the far post, who directed the ball across goal for Mateta to head in from close range for his sixth goal of the campaign.

The home supporters were still revelling in Mateta’s latest kick of the corner flag celebration when they were on their feet again eight minutes later.

Andersen produced a trademark crossfield pass from the back and Ayew was able to control the ball before he bent his shot around Ramsdale and into the bottom corner with aplomb.

It was a well-worked goal but Gabriel, who had looked nervy from the outset, made an error in trying and failing to intercept Andersen’s pass while Nuno Tavares – recalled due to Kieran Tierney’s injury – lost Ayew too easily.

The same duo had been guilty of not dealing with Gallagher’s free-kick for the opener and opportunities continued to come regularly for the hosts with Mateta denied by Ramsdale after good work by Jeffrey Schlupp and Zaha.

A late Gabriel header, which was easy for Vicente Guaita, was all Arsenal had to show for a below-par first 45 minutes and Arteta had seen enough with Gabriel Martinelli introduced in place of Tavares at the break.

Granit Xhaka went to left-back as a result and, while Bukayo Saka had a hopeful penalty appeal waved away at the beginning of the half, it was Palace who remained the most dangerous.

Arsenal did improve after the hour mark and Emile Smith Rowe should have done better when the ball dropped for him but his eight-yard effort was weak and down Guaita’s throat.

Martin Odegaard had an equally fine chance with 23 minutes left after being set up by one of substitute Eddie Nketiah’s first touches and yet the Norway international could only steer his shot wide.

Palace were in a crucial period now but Zaha, who had wanted to join Arsenal in the summer of 2019, put the game to bed in the 74th minute.

After he won the ball by the halfway line, the Ivory Coast attacker dribbled past Gabriel and ran at Ben White before Odegaard clipped his ankle in the area.

Referee Paul Tierney took a couple of seconds but pointed to the penalty spot and Zaha did the rest to fire home his 11th goal of the season.

There was still time for Marc Guehi – fresh from his England debut – to make a stunning block on the line to deny Smith Rowe before Nketiah curled an effort against the woodwork but it was Palace’s night with ex-Arsenal captain Vieira damaging his old club’s hopes of Champions League qualification.