Just three days out from the start of the marathon six-week event, both South Africa — who rested match-winners Hashim Amla and Dale Steyn — and Sri Lanka looked lacklustre.
In Christchurch, Kane Williamson top-scored with a 53-ball 66, dotted with nine fours. Skipper Brendan McCullum smashed a typically muscular 59 off 45 balls with seven fours and a six.
Their efforts lifted the home side to an impressive 331-8 in 50 overs.
Seamers Vernon Philander, Wayne Parnell and Kyle Abbott all took two wickets each but strike bowler Morne Morkel went wicketless, conceding 31 runs off seven overs.