Karunaratne, who resumed the third day’s play on 49, scored 152 from 363 deliveries and looked well set to come out again on Monday before he was bowled by Trent Boult with about 30 minutes remaining at Hagley Oval in Christchurch.
Boult then had Niroshan Dickwella (4) caught in the slips with less than three overs remaining to give the hosts hope they will be able to wrap the game up early on the fourth day and take a 1-0 lead in the two-match series.
Sri Lanka, who had been forced to follow on after being bowled out for 138 in the first innings, were still 10 runs behind New Zealand’s total of 441.
Captain Angelo Mathews, who provided some momentum to Sri Lanka’s innings after he replaced Lahiru Thirimanne (25) before tea, was on 53 at the close of play, his second half century of the match.
Nightwatchman Tharindu Kaushal was five not out.
Karunaratne, whose previous best score was 85, was ably supported in an 87-run partnership with Thirimanne before he was well caught by a diving BJ Watling off Jimmy Neesham.
Mathews then joined his left-handed colleague and the pair added 96 runs before Karunaratne was bowled by Boult with a beautiful delivery that nipped away off the seam.
Sri Lanka had resumed their second innings on Sunday on 84 without loss and lost Kaushal Silva in the first over of the day to Tim Southee for 33, before Kumar Sangakkara (1) edged a Boult delivery to Watling to leave Sri Lanka 94-2 before lunch.
The second test is at Wellington’s Basin Reserve from Jan. 3-7. (Reuters)