New Zealand struggled to 159 for five on the second day of the second and final Test on Thursday, trailing Sri Lanka by 257 runs after Thilan Samaraweera's century had put the hosts in command.
Ross Taylor was providing lone resistance for the Kiwis at the close, having compiled 70 not out from 118 balls.
Wicketkeeper Brendon McCullum was also unbeaten on five.
Left-armer Thilan Thushara continued his fine form by taking two for 37 for Sri Lanka.
Earlier, Samaraweera thumped 143 as Sri Lanka totalled 416 in their first innings despite losing their last five wickets for 27 runs.
Samaraweera shared a 180-run partnership for the fourth wicket with Mahela Jayawardene (92).
The centurion batted for more than six hours, facing 240 deliveries and hitting 17 fours and a six as he made his second hundred of the series.
EXPENSIVE START
New Zealand fought back in the afternoon session, off-spinner Jeetan Patel recovering from an expensive start to finish with four for 78.
Sri Lanka, 1-0 up in the series, had started the day on 262 for three.
Jayawardene scored 92 in 234 balls before being caught behind off seamer Iain O'Brien.
Chamara Kapugedera, replacing injured all-rounder Angelo Mathews, then stroked 35 before lofting a catch off Patel.
After lunch wicketkeeper Prasanna Jayawardene (17) top-edged a hook and Samaraweera was quickly running out of partners when he was finally caught behind off Patel.
When New Zealand went into bat, captain Kumar Sangakkara briefly experimented with Tillakaratne Dilshan opening the bowling with his off breaks.
However Sangakkara quickly reverted to the pace of Dammika Prasad, who trapped Tim McIntosh lbw for five.
Thushara then had Daniel Flynn caught behind for 13, Prasanna Jayawardene taking a good diving catch.
Martin Guptill (35) top-edged a pull to deep backward square before Jesse Ryder (23) helped steady the innings with Taylor, adding 85 for the fourth wicket.
Ryder, though, was snapped up at bat-pad off Rangana Herath and Muttiah Muralitharan removed nightwatchman Patel for one.