New Zealand were eyeing a historic victory as injury and a barrage of Neil Wagner bouncers left Sri Lanka in tatters at the close of day four of the second Test in Christchurch on Saturday.
The conditions were tailor-made for short-ball specialist Wagner, New Zealand bowling coach Shane Jurgensen said, as Sri Lanka were 231 for six at stumps.
At most they have only four wickets left, but with doubt whether the injured Angelo Mathews will return to help them survive the final day.
At the crease were Dilruwan Perera on 22 and Suranga Lakmal on 16 with their 660-run target out of sight.
Wagner, who had little success earlier in the series, broke through stubborn Sri Lankan resistance, with figures of three for 47 from a marathon 28 overs.
"I think he showed what he could do once he had a little bit more bounce on offer. I thought he bowled with really good pace and really questioned the Sri Lankan batsmen," Jurgensen said.
"I was commenting in our viewing area saying I think this day is set up for Neil.
"He was really licking his lips today to have a good crack and he certainly had that."
After rain ensured a drawn first Test in Wellington, a win in the Christchurch decider would give New Zealand a fourth consecutive series win for the first time after beating the West Indies, England and Pakistan earlier this year.
Despite losing both openers in the first two overs of their second innings, Sri Lanka fought to stay in the game until Wagner came into the frame.
Skipper Dinesh Chandimal and Kusal Mendis produced stubborn resistance for 53 overs for the third wicket before Mendis went for 67.
They had seen off the swing and seam of New Zealand strike bowlers Tim Southee and Trent Boult at the start of the day, were untroubled by spinner Ajaz Patel, and initially, they dodged the barrage aimed at the ribs by Wagner.
But Mendis, who in the course of his innings became only the second player behind India's Virat Kohli to score 1,000 Test runs this year, was frustrated as Wagner forced him on to the back foot with four successive deliveries.
When the next ball was full length, the 23-year-old could not resist going for the drive and was smartly caught by substitute fielder Matt Henry diving to his left at extra cover.
Angelo Mathews, who in the first three innings of the series scored 236 runs and was dismissed only once, reached 22 when he was forced to retire at tea with a hamstring injury after hobbling between the wickets for the last 10 minutes before the interval.
Chandimal faced 228 deliveries before he fell victim to a Wagner bouncer that zipped from the gloves to the helmet and into the hands of close-in fielder Henry Nicholls.
Niroshan Dickwella reached 19 before he chopped a wide Southee delivery on to his stumps.
Silva and Dilruwan Perera took Sri Lanka past the 200 mark before Wagner struck again with Silva caught behind for 18.
Wagner also clouted Perera on the helmet with a rising delivery just before stumps but the batsman was able to play on after being checked by medical staff.