Spinners Rangana Herath and Muttiah Muralitharan snared three wickets each as New Zealand were bundled out for 234 on Friday, giving Sri Lanka a 182-run lead on first innings in the second Test.
Sri Lanka faced just one over before lunch in its second innings, finishing at 2-0.
Brendon McCullum (18) was the first batsman dismissed on Friday, caught by Mahela Jayawardene at slip off Muralitharan.
The dismissal ended a promising 34-run stand for the sixth wicket with Ross Taylor who made the only half-century for the Black Caps.
Taylor was out the very next over, snapped up by wicketkeeper Prasanna Jayawardena for 81 runs that came off 155 balls and included 10 boundaries. He shared an 85-run stand for the fourth-wicket with Jesse Ryder on Thursday.
Jacob Oram and captain Daniel Vettori batted for a 43-run partnership that took New Zealand past the follow-on mark.
Vettori made 23 before being caught bat-pad by Chamara Kapugedera off Tillakaratne Dilshan and Oram was out for 24 trying to reverse-sweep Herath.
Herath returned 3-70 while Muralitharan had 3-71. Sri Lanka was well poised to complete a 2-0 series sweep.