After finally breaking his duck for the season in last weekend’s loss to Liverpool, the winger struck the opening goal in a 2-0 success at Turf Moor.
Zaha tore Burnley apart here last season and he finished off a driving run just before half-time, while substitute Jeffrey Schlupp took advantage of poor defending to secure the points 12 minutes from time.
Palace had not won since October 5, taking only one point from a run of five very tough fixtures, while the result was a blow to Burnley after back-to-back 3-0 victories.
The Clarets were forced into a change to their winning line-up, with Ashley Westwood serving a one-game suspension.
Sean Dyche had the option of giving Danny Drinkwater a Premier League debut for the club but instead put the on-loan Chelsea man on the bench, with Jeff Hendrick moving into the middle and Robbie Brady stepping in out wide.
The first half an hour was a story of endeavour trumping quality. There were a few half chances – Luka Milivojevic sent an early free-kick just over after Zaha had been felled by James Tarkowski, while Jack Cork shot wide and Dwight McNeil straight at Vicente Guaita at the other end.
Burnley had to make a substitution in the 36th minute when the unfortunate Charlie Taylor, who had only just won his place back after picking up an injury during pre-season, went off to be replaced by Erik Pieters.
Two minutes later, Palace, who were offering most of the attacking threat, thought they had scored.
The ball bobbled up to Van Aanholt, who then set up Jordan Ayew to poke in, but a VAR check confirmed Van Aanholt had strayed just offside.
It was a firmly-struck shot but the England keeper would have been disappointed not to keep it out after getting a hand to the ball.
Dyche strode purposefully towards the changing rooms at half-time and Burnley sprang into life on the restart, Pieters firing a fierce shot into the side netting after an initial effort was blocked.
But it was clear how much they missed Westwood’s combative presence in midfield, with Palace winning most of the loose balls.
Bardsley’s aggression, meanwhile, saw him booked for sliding into a tackle on Zaha, leaving the full-back furious with the Palace man and referee Peter Bankes.
Bardsley squared up to Milivojevic in the aftermath but a VAR check decided against any further action.
Burnley should have equalised in the 58th minute when Kouyate’s misplaced header played Chris Wood clean through but the striker got his shot horribly wrong and it sailed well over the bar.
The hosts maintained the pressure and Wood got his head to a corner only for James McArthur to clear off the line.
Burnley were left to rue those misses in the 78th minute when Ben Mee miscued an attempted clearance from an innocuous-looking ball forward and Schlupp, on for Andros Townsend, shot through Pope’s legs.
The hosts had one good chance to apply some late pressure but Guaita produced a flying save after a cross flicked off Wood’s back.