Sangakkara backed up his unbeaten century in the first Test to be 131 not out at tea as Sri Lanka advanced to 239 for six at tea on Friday.
It was a solid turnaround for a side struggling at 112 for four at lunch as first Sangakkara and Chamara Silva put on 121 for the fifth wicket, and then Prasanna Jayawardene joined Sangakkara to add a further 37 runs.
Silva, who was out for a pair in his Test debut in Christchurch, made amends with a well earned 61 before edging James Franklin to Stephen Fleming at first slip.
Jayawardene, who was dropped by Brendon McCullum when on four, and later edged Shane Bond between McCullum and Fleming, reached 25 before he was out on the last ball before tea when trapped in front by Daniel Vettori.
New Zealand skipper Fleming had turned to his spinner after the seam bowlers had done the early damage.
Chris Martin, the pick of the New Zealand bowlers, ripped through the Sri Lankan top order to have three for 20 by lunch but bowled without success through the middle session as his figures ballooned to three for 50.
Had it not been for the determined Sangakkara, Sri Lanka would have been in serious trouble as the other batsmen struggled against the early New Zealand pace attack.
Martin stuck first with his third ball of the day which Sanath Jayasuriya (0) edged straight to Fleming at first slip. Upul Tharana (7) knicked Martin to wicketkeeper McCullum, and Jayawardene (0) was bowled by the speedster.
Chamara Kapugedera contributed five in a 40-run partnership with Sangakkara for the fourth wicket before guiding Jacob Oram to Mathew Sinclair in slips.
New Zealand lead the two-Test series 1-0.
Sri Lanka 1st innings: Total 268 (K. Sangakkara not out 156, C. Silva c Fleming b Franklin 61, P. Jayawardene lbw b Vettori 25)
Fall of wkts: 1-0, 2-27, 3-41, 4-81, 5-202, 6-239, 7-240, 8-251, 9-259
Bowling Bond: 16-1-85-2 (3nb), Martin 13-2-50-3 (1nb), Franklin 12-2-46-1 (4nb), Oram 3-0-10-1, Vettori 14-1-53-3, Astle 7-2-22-0