One of the Hornets' numerous Udinese loanees, Almen Abdi, fired them ahead in the sixth minute with a well-placed finish from the edge of the area after a mistake by Jazz Richards. Teenager Nathaniel Chalobah doubled the lead when he headed in after Marco Cassetti's volley hit the turf and bounced up kindly for him at the far post.
But Palace pulled one back in the 66th minute when Peter Ramage prodded home. And four minutes later Richards put a low, inviting ball on a plate for Kevin Phillips to tuck away as he has been doing for the past 20-odd years.
Both sides could have gone second in the npower Championship with a win, but Zola had to settle for climbing up to third, level with Leicester, for a few hours at least.
"After the first half we were not expecting anything like that," he admitted.
"They played really well and caused us a lot of problems and we did not have the same freshness in our legs. And Phillips certainly made a difference.
"But there are 15 games to go and I don't want to be second now, I want to be second at the end of the season. It's going to be a race to the end."