Zaha converted a retaken second half penalty and sealed victory with a thumping shot past David De Gea as Palace made it two wins from two and repeated its victory of last season at Old Trafford.
Donny van de Beek’s debut goal either side of Zaha’s double after Andros Townsend opened the scoring for Palace in the first half was the only bright spot for Ole Gunnar Solskjaer’s men, who finished last season with such a flourish to claim a Champions League spot.
There was little of that quality on evidence as United lost its EPL opener for the first time in six years, with a lack of pace in its defensive line evident as Townsend opened Palace’s account as early as the seventh minute.
Jeffrey Schlupp was able to evade Victor Lindelof and crossed for Townsend to score at the far post.
United improved towards the end of the first half but was still indebted to De Gea for a smart stop from Jordan Ayew.
Palace captain Zaha had a goal ruled out for offside before Palace won a penalty as Lindelof was harshly penalized for handball.
Ayew’s weak effort was easily saved by De Gea, but the video assistant referee (VAR) adjudged the goalkeeper had moved too early and from the second spot kick it was Zaha who was entrusted to score.
Former Ajax star van de Beek was called from the bench to replace the ineffective Paul Pogba and showed his goalscoring instinct to pull one back, but hopes of a home revival were snuffed out as Ivorian international Zaha brushed off Lindelhof and scored the third.
Calvert-Lewin hat-trick in Everton win
Earlier, Everton continued its superb start to the season with a 5-2 thumping of newly promoted West Bromwich Albion.
Everton’s new signing James Rodriguez scored his first Premier League goal, while Dominic Calvert-Lewin hit a hat-trick to add to his goal in the 1-0 win over Tottenham Hotspur on the opening day of the season.
But the victory was not as straightforward as the scoreline suggests with Grady Diangana putting Albion ahead early in the match at Goodison Park.
Calvert-Lewin equalized before Colombian international Rodriguez put them ahead before being involved in a controversial incident just before halftime.
Kieran Gibbs was shown a red card for pushing the former Real Madrid star in the face with Albion boss Slaven Bilic also sent to the stands for protesting the decision to referee Mike Dean.
Down to 10 men, Albion equalized just after the restrart through Mattheus Pereira before Michael Keane restored Everton’s lead and Calvert-Lewin cemented the victory with his second and third goals.
At 23, Calvert-Lewin is the youngest Englishman to score a Premier League hat-trick for Everton.
Leeds, so impressive in the opening day 4-3 defeat to Liverpool, secured its first win of the season in another seven-goal thriller, beating Fulham 4-3 at Elland Road as Helder Costa scored twice.
He opened the Leeds account before Fulham striker Aleksandar Mitrovic equalized from the penalty spot in the 35th minute after a foul on Joe Bryan.
Bryan then conceded a penalty at the other end for a push on Patrick Bamford and Mateusz Klich restored Leeds’ advantage with a 40th minute spot-kick.
Patrick Bamford made it 3-1 for Leeds early in the second half and the game looked over after another superb strike from Costa for the fourth.
But Fulham hit back in the 62nd minute through Bobby Decordova-Reid and Mitrovic’s superb header four minutes later led to a nervy ending for Leeds before the points were sealed.