Kane Williamson notched his 16th Test century as he led New Zealand to within 61 runs of South Africa's 308 on day three of the first Test in Dunedin on Friday.
New Zealand were 247 for five at lunch in an evenly balanced contest with Williamson on 111 and BJ Watling on 20.
Williamson has drawn level with Ross Taylor as New Zealand's second-most prolific century makers, one behind the record of 17 held by the late Martin Crowe.
Taylor, who was on eight when he hobbled from the field early in the New Zealand innings with a calf tear, confirmed he will continue his innings if necessary.
Williamson, who resumed on 78, was at the crease for nearly an hour and faced 27 deliveries before his first scoring shot of the day, a single off Kagiso Rabada.
After cautiously working his way up to 99, he was gifted the ton when South Africa flicked the ball to part-time spinner JP Duminy whose first delivery was a full toss which Williamson turned down the leg side for a single.
New Zealand, 177 for three at stumps on Thursday, added 70 for the loss of two wickets in the first session on the third day.
Nightwatchman Jeetan Patel added a quick seven to his overnight nine before being caught by an exceptional piece of athleticism by Faf du Plessis at second slip.
Patel edged a Vern Philander delivery that flew towards du Plessis who instinctively flung out his right hand to stop the ball which then rebounded in the air and he grasped it at the second attempt.
Morne Morkel claimed his first wicket on his return to Test cricket on a marginal call when Jimmy Neesham was caught behind for seven.
With video replays inconclusive as to whether the delivery was a no ball, third umpire Rod Tucker ruled in favour of the bowler.
But New Zealand won a decision from the Australian when Watling on three was given out lbw to Keshav Maharaj only for replays to show the ball came off his arm and would have bounced over the stumps.