Incoming United boss Erik ten Hag was in attendance at Selhurst Park as Zaha punished a languid first-half showing by Ralf Rangnick's side to put Palace in front.
United, without the injured Cristiano Ronaldo, could not find a breakthrough in the second half as it fell to a sixth straight away league defeat.
However, West Ham United was defeated by Brighton and Hove Albion on Monday (AEST), which kept United in sixth despite the Red Devils finishing the term with a club record-low Premier League points tally.
Edinson Cavani, playing in his final game for United, almost wrong-footed Vicente Guaita with a volley after 14 minutes, but the Spaniard re-adjusted to parry away.
David de Gea showed quick reflexes to thwart low drives from Zaha and Jeffrey Schlupp, but the United goalkeeper had no response shortly after when the Ivory Coast international drilled into the bottom-left corner.
Bruno Fernandes tamely curled a free-kick into Guaita's hands after the interval, while Conor Gallagher dragged a presentable opportunity wide at the other end.
Anthony Elanga sliced wide from Juan Mata's cutback as United searched for a late equaliser, although a belated offside flag against the Spaniard spared the Sweden international's blushes.
United continued pressing forward but Palace held firm for a fifth consecutive top-flight home clean sheet for just the second time in history.