Ole Gunnar Solskjaer’s side had no margin for error after Leicester’s 2-0 victory earlier in the day and they responded thanks to goals from Marcus Rashford and Anthony Martial.
United’s fifth win in their last six league games leaves them in fifth place in the Premier League.
They are level on points with fourth-placed Leicester, trailing them on goal difference, and one point behind third-placed Chelsea.
With the financial implications of failing to reach the Champions League certain to be painful for United, Solskjaer’s men will be under intense pressure in their final two league games.
After Sunday’s FA Cup semi-final against Chelsea, United host West Ham on Wednesday before a decisive showdown at Leicester on July 26.
United could also qualify for the Champions League if they win the Europa League, which is set to resume in August.
“No one thought in January that we would be in with a shout for the top four. We have done fantastic since the restart,” Solskjaer said.
“We didn’t get the rhythm in our passing but two fantastic goals won it for us. That is the thing at Manchester United, you have to step up and show your personality.”
Rashford broke the deadlock in first-half stoppage-time when the England forward cleverly deceived two Palace defenders with a drag-back and slotted home from close range.
Palace complained vehemently that they should have been given a penalty moments earlier when Wilfried Zaha went down after contact from Victor Lindelof.
Referee Graham Scott waved away their appeals and VAR didn’t change the decision, with replays showing Lindelof got a slight touch on the ball.
Palace were denied again in the second half when Jordan Ayew’s goal was ruled out for offside by VAR.
“What’s the point in getting into it? If I said it was, they say it wasn’t, it becomes like a Christmas pantomime,” Palace boss Roy Hodgson said of the VAR controversy.
Martial killed off Palace in the 78th minute with a clinical finish after good work by Rashford.
Leicester bounce back
At the King Power Stadium, Leicester earned their first win in three games thanks to goals from Ayoze Perez and Demarai Gray.
Thrashed 4-1 by Bournemouth on Sunday, Brendan Rodgers’ team took the lead in the 29th minute with Perez’s first goal since January.
Gray’s deft finish sealed the points from Jamie Vardy’s pass in the 79th minute.
Leicester’s next match is at Tottenham on Sunday before the United clash on the last day of the season.
“I thought we were brilliant. The result gives us the second highest finish in Leicester’s history,” Rodgers said.
“We have two games to go to create some more history.”
Sheffield United’s first defeat in five games was a blow to their hopes of reaching the Europa League.
At Goodison Park, Aston Villa’s hopes of avoiding relegation were seriously damaged by their 1-1 draw against Everton.
Villa were within touching distance of a second successive win after Ezri Konsa put them ahead with a close-range finish from Conor Hourihane’s 72nd minute free-kick.
But Theo Walcott brought Everton level in the 87th minute when his looping header was ruled to have crossed the line despite Konsa’s despairing attempt to clear.
It was an agonising blow for Villa, who remain second bottom and sit three points from safety with just two games left.
With West Ham and Watford - the two teams directly above the relegation zone - meeting today, Villa aren’t down yet, but they are in grave danger of an immediate return to the Championship.
“The lads are devastated because we deserved more. We have to concentrate on our last two games. We are still in it,” Villa manager Dean Smith said.
Brighton are almost safe after a 1-1 draw at south-coast rivals Southampton.
Albion, who sit six points above the relegation zone, took the lead through Neal Maupay’s 17th minute strike before Danny Ings levelled in the 66th minute with his 20th league goal of the season.