Kapugedera ran out McCullum for 28 to put the brakes on the New Zealand scoring until Astle opened up, taking 15 off the penultimate over by Ruchiro Perero to level the scores.
In the next over, Astle sneaked a single off the third ball from Tillakaratne Dilshan to wrap up proceedings.
The tone of the game was set from the very first ball of the game when television technology showed that Upul Tharanga had edged a ball from James Franklin to wicketkeeper Peter McGlashan.
It was such a faint edge that the players did not even appeal, but that didn’t matter much as Franklin bowled Tharanga two balls later.
By the 10th over, Sri Lanka were in deep trouble at 58 for six and if it was not for a Lasith Malinga and Fernando their innings may well have ended much earlier.
Malinga’s 27 came from 19 balls and Fernando hit 21 from 14, whacking 44 in four overs for the ninth wicket before Fernando mishit an Astle full toss and was caught by Andre Adams on the deep mid-wicket boundary.
Franklin was the most successful of the New Zealand bowlers with three for 23, while for Sri Lanka Fernando backed up his fine knock with the bat by taking three for 19.
Sri Lanka won the rain-affected first match in Wellington on Friday by 18 runs on the Duckworth-Lewis calculation method.
The two teams play the first of five one-day matches in Napier on Thursday.