Tyrick Mitchell’s cross from the left on 42 minutes was brilliantly taken down by Gallagher, who worked the ball into space and blasted his shot past goalkeeper Ben Foster.
Jean-Philippe Mateta had put Palace in front, but the lead was short-lived when Moussa Sissoko scored his first Watford goal. Zaha added two more late on, the second also an eye-catching effort, as Palace secured only their second away league win of the season.
Watford, who travel to Manchester United on Saturday, remained in the relegation zone with 18 points from 25 games, four points from safety. Palace climbed two places to 11th with 29 points from 26 matches. They next host Burnley at Selhurst Park.
The visitors hit the front on 15 minutes when Gallagher’s low cross fell to Mateta, whose shot on the turn deflected in off defender Kiko Femenia.
The lead lasted only two-and-a-half minutes, though, as Sissoko outjumped two Palace defenders to head in Femenia’s corner.