The Phoenix looked like having to settle for a draw after leading for 75 minutes when Trent Buhagiar equalised for the Jets to cancel out an early Alex Rufer penalty.
But up stepped Zawada, introduced as a 73rd-minute substitute. He was played in behind the Jets defence by Ben Old and smacked a first-time left-foot shot inside the far post.
The Phoenix held on for the win, which takes them two points clear at the top above the Melbourne Victory.
Coach Giancarlo Italiano said he believed the Phoenix were worthy winners.
“We had the bigger chances, and upon reflection in the first half, we should have scored three goals,” Italiano said.
“Unfortunately we conceded another soft goal off a set piece, which we need to get better [at and] not allow teams to come into the game.
“I wasn’t happy just taking the draw, so credit to Oldie, Oz [Zawada] coming on, O.V.H. [Oskar van Hattum], they did really well and they got us the win.”
Zawada was pleased with his match-winning contribution.
“It’s amazing to come back and score such an important goal,” Zawada said. “Amazing effort from the team, good pass from Benjamin Old to me, good finish. I think we surprised them with our five defenders at the back. I felt like very often we had the ball under control. Second half, we lost a goal, a little unlucky, but then we came back.”
Italiano fielded five at the back to try to stymie the counter-attacks that proved profitable for the Jets during their win in Wellington.
The Phoenix started brightly, with Sam Sutton shooting into the side netting after just 30 seconds before they earned a penalty inside two minutes. The way Mark Natta upended David Ball made the decision easy for referee Casey Reibelt.
Captain Rufer confidently smacked his spot kick a little left of centre for his third goal in three games - quite the turnaround for a player who had scored only twice in his previous 100-plus A-League games.
An entertaining first 15 minutes saw five good chances created, with the best a Kosta Grozos shot from 25 metres. The Jets midfielder took advantage of poor defending to loft a shot over Phoenix keeper Alex Paulsen but a perfectly placed Scott Wootton headed the ball up onto the crossbar and out.
A Grozos shot from 30m forced Paulsen to make a save late in the first half and another effort by the same player from outside the area led to Newcastle’s equaliser. Grozos shot and a slight Buhagiar touch was enough to deflect the ball past Paulsen.
But just as the 10th-placed Jets looked like earning a point, Zawada’s strike ruined their night.
The Phoenix next play in Brisbane against the Roar on Friday night.
Newcastle Jets 1 (Trent Buhagiar 80)
Wellington Phoenix 2 (Alex Rufer 5 pen, Oskar Zawada 87)
Halftime: 0-1.