Dimuth Karunaratne scored his maiden test century as Sri Lanka reached 201 for three at tea in the first match on Sunday but the visitors still require 102 runs to make New Zealand bat again.
Karunaratne was on 116 at the break with captain Angelo Mathews on 12 as the visitors quietly went about trying to extend the game at Hagley Oval in Christchurch beyond the third day.
Lahiru Thirimanne, who had an lbw decision overturned on review before lunch, was the only wicket to fall in the session when he chased a wide delivery from Jimmy Neesham and was well caught by a diving BJ Watling for 25 to end an obstinate 87-run partnership with Karunaratne.
New Zealand captain Brendon McCullum had tried several bowling options, including Kane Williamson's off-spin, to break the partnership before he took the second new ball midway through the session.
Karunaratne then brought up his century off its first delivery with a thick outside edge past gully for two runs.
Neesham was thrown the ball after just seven overs from new ball pair Tim Southee and Trent Boult, and after four deliveries well outside offstump he managed to get the batsman to chase one that led to his downfall.
Sri Lanka, who had been skittled for 138 in their first innings and asked to follow on, had resumed their second innings on Sunday on 84 without loss.
They lost Kaushal Silva in the first over of the day to Southee for 33, before Kumar Sangakkara, the world's leading run scorer in 2014, edged a full delivery from Boult to Watling for one run to leave Sri Lanka 94-2.
The second test is at Wellington's Basin Reserve from Jan. 3-7.