Palace took the lead when Zaha slipped a weighted ball through the defence for midfielder Jairo Riedewald, who slotted his shot past the onrushing goalkeeper Alphonse Areola for his first goal in the Premier League.
Ademola Lookman was Fulham's brightest spark, and the forward had plenty of opportunities to equalise, having a shot pushed wide by Palace keeper Vicente Guaita before another effort came off the inside of the post.
But the visitors doubled their lead in the second half when Michy Batshuayi fired a low cross into the six-yard box for Zaha to slide in at the far post and tap the ball home.
Fulham midfielder Tom Cairney scored a consolation goal in stoppage time, but Palace held on for the win to move up to fifth place on 10 points. Fulham remain bottom of the table with just one point.