The hosts, needing 363 to win, were struggling at 47 for four in their second innings at stumps on the penultimate day when 17 wickets fell at the P. Sara Oval in Colombo.
Fast bowler Southee, who took five wickets in the first innings, continued to trouble the Sri Lankan batsmen as he removed openers Tharanga Paranavitana and Tillekaratne Dilshan in his lively opening spell.
Paceman Bracewell then grabbed two big wickets when he bowled Kumar Sangakkara (16) and had captain Mahela Jayawardene (five) caught behind.
New Zealand captain Ross Taylor, who scored a hundred in the first innings, top-scored with 74 after his team had lost three wickets for one run off four balls.
New Zealand, leading by 168 runs, declared their second innings at 194 for nine to set a challenging target for the hosts, who lead the series 1-0 following their 10-wicket win in the opening Test.