The Eagles had to do it the hard way, with Eberechi Eze on the hour mark scoring his first goal of the season to cancel out Oriol Romeu’s early goal, before Zaha ensured Palace returned to south London with all three points.
Patrick Vieira had left the winger on the bench after a bruising encounter at Leeds in the Eagles’ last outing, but he came on for the final 25 minutes to remind everyone just how indispensable he is to his club.
The result lifts Vieira’s side above Southampton and within touching distance of the top half of the table with four Premier League matches left to play.
Romeu had missed two excellent headed chances in Southampton’s recent defeat at Burnley but scored one here from James Ward-Prowse’s inswinging corner in the ninth minute.
The Spaniard rose above Joel Ward at the far post to head in off the crossbar and give Ralph Hasenhuttl’s side the lead.
Palace grew into the match as Eze and Jeffrey Schlupp combined to create a chance for Jean-Philippe Mateta, whose near-post shot was saved by the legs of goalkeeper Fraser Forster.
With the primary objective of survival already achieved, the pressure was off both sides, making for an open game.
Conor Gallagher and Ward-Prowse may well end up competing for the same place in Gareth Southgate’s World Cup squad and both were prominent.
Gallagher broke well towards the end of the first half and Ward-Prowse did just enough to deflect his dangerous cross onto the roof of the net and prevent the ball from reaching the unmarked Mateta.
Forster, soon to be out of contract at Southampton, was then needed to make a smart save as Jordan Ayew headed Eze’s corner towards the top corner.
After a slow start, it was Palace who now looked the more threatening.
Five minutes after the break, Ayew got to the byline and Forster pushed away his cross, with Schlupp seeing a point-blank shot blocked by defender Jan Bednarek.
They deservedly equalised when Ayew fed former Saints full-back Nathaniel Clyne and his deep cross was volleyed low between Forster’s legs by Eze.
It was Eze’s first goal since tearing his Achilles last May, with the former QPR player having struggled to regain his place since returning from injury in November.
Vieira introduced Zaha from the bench as Palace looked for a winner and he provided exactly that, working space for himself on the edge of the box and firing into the bottom corner.
Additional reporting by PA Sport.