Manchester United fought back from two goals down to claim a sensational victory thanks to a Nemanja Matic winner in added time under the lights at Selhurst Park.
Andros Townsend put Crystal Palace ahead in the first half and Patrick van Aanholt doubled their lead early in the second, but the Reds roared back with goals from Chris Smalling, Romelu Lukaku and, with a stunning last-gasp strike, Matic.
The Serbian’s first goal in the United shirt, a dipping, left-footed effort from distance, sent the travelling fans into delirium and lifted the Reds back into second place in the Premier League table.
Palace found themselves with a corner in the opening five minutes, which yielded the first chance of the match as James Tomkins tried an overhead kick, but his effort lacked any accuracy.
A minute later, the Reds had a first attempt on goal when Alexis Sanchez leapt for a header in the box; Wayne Hennessey was off his line quickly to block the Chilean’s effort.
It was Palace who struck first when a quick break allowed Christian Benteke to slide the ball across the edge of the area to Townsend. His strike took a wicked deflection off Victor Lindelof and flew into the top-right corner, past a helpless David De Gea.
Looking to double the hosts’ advantage shortly after, Alexander Sorloth would have hoped for better than the tame shot he rolled through to De Gea after cutting in from the right wing.
Despite having more than 70 per cent of the ball in the first half, the final pass needed to slice open the Eagles’ defence was lacking for Jose Mourinho’s side, but there were signs that it might not have been far away.
First, Paul Pogba’s cross left Hennessey flapping, but the Welshman did enough to keep the ball out of the path of United’s front men, then Jesse Lingard could only drag a shot wide.
There was uproar among the home fans when Sorloth looked to have beaten Matic, but he was rightly called back by referee Neil Swarbrick for pulling the Serb back by the shoulder.
Marcus Rashford came on for Scott McTominay at the interval but a nightmare start to the second half saw Palace net a second after just three minutes. A quickly taken Jeffrey Schlupp free-kick allowed van Aanholt to escape the United defence and fire the ball past De Gea, who was left rooted to the spot.
United were stunned but immediately looked to strike back quickly and Smalling found himself in a battle with Tomkins at the back post, but he couldn’t direct his header on target.
Two minutes later and again from a corner, the ball came out to Antonio Valencia who lifted it to Smalling, allowing him another chance in the box. The Englishman made no mistake this time, heading the ball across goal and into the net for his second goal of the season.
Mourinho sent on Luke Shaw and Juan Mata as he pushed for an equaliser, and Pogba produced a dangerous curling effort from the edge of the area that Hennessey was equal to, although he was only able to turn it behind.
Matic then fired an effort goalwards from the edge of the six-yard box, but was denied on the line by Benteke. However, the equaliser wasn’t long in coming.
Lukaku collected the ball inside the box after Alexis’s deflected shot had hit the crossbar and, after keeping his cool and picking his spot, United’s top scorer made it 23 goals for the season.
United were now in command but De Gea was called into action almost immediately from the kick-off, as Benteke was prevented from putting his side back ahead by yet another incredible reactive save from the Spaniard.
As the game entered stoppage time, it looked like United would have to settle for a point. That was until the ball dropped to Matic outside the box and he fired home a glorious effort, with no time for a Palace response.
Crystal Palace: Hennessey; Wan-Bissaka, Kelly, Tomkins, van Aanholt; Townsend, McArthur, Milivojevic (c), Schlupp (Riedewald 80); Benteke, Sorloth.
Subs not used: Cavalieri, Delaney, Jach, Souare, Rakip, Lee.
United: De Gea; Valencia (c) (Shaw 67), Lindelof, Smalling, Young (Mata 67); McTominay (Rashford 45), Matic, Pogba; Alexis, Lukaku, Lingard.
Subs not used: Pereira, Bailly, Darmian, Carrick.
Booked: McTominay, Young, Matic.