Watford were dominant from the off and took the lead early on as Richarlison took advantage of some slack defending by picking up a loose ball and whipping a cross towards the far post where Janmaat was on hand to head home.
The Hornets continued to push forward and weigh in with chances as Palace struggled to cope with the opposition's wing-backs, although the hosts did threaten on the half-hour mark, only for Janmaat to head behind as Christian Benteke was on hand to drill home.
From the ensuing corner, Watford swiftly broke on the counter and worked the ball to Richarlison, who cut back towards the far post where Troy Deeney was perfectly placed to slot home, only for the striker to scuff his effort wide.
Palace began the second half brightly but soon found themselves under pressure as Watford sought to kill off the game, Richarlison forcing a smart save from Julian Speroni on 65 minutes.
The complexion of the game changed four minutes later, however, when Cleverley lunged into an opposition played and was sent off by referee Lee Mason for his second booking of the match.
With just one minute of normal time left, Zaha forced a save from Heurelho Gomes which rebounded into the path of Sako, who was also thwarted by the Brazilian goalkeeper before slamming the ball into the open net.
Just as it seemed like the points would be shared at Selhurst Park, another surge down the left from Zaha culminated in a low ball played into the middle where McArthur was on hand to tuck home into the bottom corner.
Crystal Palace (4-4-2): Speroni; Fosu-Mensah (Sako 70'), Tomkins, Dann, Schlupp; Towsend (Van Aanholt 67'), Cabaye (McArthur 77'), Milivojevic, Loftus-Cheek; Zaha, Benteke
Watford (3-4-2-1): Gomes; Mariappa, Prodl, Kabasele; Janmaat, Cleverley, Doucoure, Holebas; Carrillo (Pereyra 71'), Richarlison (Kiko 84'); Deeney (Gray 80')