Dilshan scored 116 as the visitors comfortably overhauled New Zealand's first innings total of 248 to level the seven-match series 1-1, with Angelo Mathews (39) and Kumar Sangakkara (38) also making valuable contributions.
Their efforts came after New Zealand captain Brendon McCullum won the toss and put the hosts in a strong position with a big-hitting 117, only for his teammates to squander any chance of victory through a series of basic mistakes.
"That's cricket, it's not ideal but it's one of those crazy things," bowler Matt Henry said.
Mathews' men struck early when opener Martin Guptill departed for 10 trying to loft Nuwan Kulasekara over mid-off, offering an easy catch to continue an indifferent run of form at international level.
Also Read
McCullum responded to the setback with typical aggression, bringing up his second consecutive 50 in 39 balls, including eight boundaries.
He continued to blast away even when Mathews' decision to use a second spinner paid dividends as Rangan Herath coaxed an outside edge to dismiss Tom Latham for five.
It was only the fifth time in 203 one-day innings that McCullum has managed to covert his 28 half centuries into a ton, sending a message to World Cup rivals that he is finally reproducing his Test form in the limited overs arena.