Upul Tharanga scored his second one-day international century to anchor Sri Lanka's 255 for seven off 50 overs in the third one-day international against New Zealand in Christchurch on Tuesday.
The 20-year-old Tharanga also combined with Kumar Sangakkara (36) in a 109-run second-wicket partnership before he failed to respond to a quick single attempt and ran Sangakkara out.
Sri Lanka captain Marvan Atapattu added 52 while he held the innings together towards the end while Russel Arnold (21) and Chaminda Vaas (one) were the not out batsmen.
Kyle Mills finished with two for 44 off 10 overs, while fast bowler Shane Bond produced an aggressive display of one for 39 off his full complement.
Tharanga, playing in just 12th one-day international peppered shots all around the ground and after he reached his 50 in just 59 balls he then scored at a run a ball until well into the 90s.
However, New Zealand captain Daniel Vettori's decision to reintroduce Bond into the attack in the 28th over slowed Sri Lanka's flurry of boundaries and forced Sangakkara's run out.
Tharanga then spent an agonising amount of time stuck on 99 before he pushed the ball through the covers for a single to reach the milestone.
He was dismissed for 103 when he hooked a short delivery off Jacob Oram to Peter Fulton on the backward square boundary.
Sri Lanka then lost wickets at regular intervals with Mahela Jayawardene (six), Tillakaratne Dilshan (seven) and Farvez Maharoof (seven), all failing to capitalise on Tharanga's excellent start.
Arnold smashed three boundaries off the 49th over from Cairns to push Sri Lanka over 250, before Atapattu was run out by a direct hit from the boundary by Nathan Astle in the final over.
The five-game series was originally due to be played a year ago but was postponed after just one match, won by New Zealand, when parts of Asia, including Sri Lanka, were hit by a tsunami.
The final two games are in Wellington on Friday and Napier on Sunday.