Sri Lanka knocked off their 277-run target with 22 balls to spare in a remarkable turnaround after being outplayed in the first two matches.
In addition to Dilshan’s heroics, Lahiru Thirimanne cracked an unbeaten 87 and Danushka Gunathilaka made 65.
Dinesh Chandimal was not out 27 at the end as the match followed the same formula as the first two where the team that lost the toss batted second and dominated.
Gunathilaka said it was a must-win game and non-playing speedster Suranga Lakmal sharpened the players up when he hit several in the nets the previous day.
“That’s true, we talked about that and how now we are okay,” he said.
“Angelo (Mathews) and (Milinda) Siriwardana were hit on the head and Dilshan hit in the face.
“We talked about how we have to be positive and we can’t have negative thoughts because certainly this New Zealand side is a very strong side and they are a very good bowling attack.”
New Zealand now lead the series 2-1 with two matches remaining.
Batting first in the opening matches on faster wickets in Christchurch, Dilshan, Thirimanne and Gunathilaka posted a total of 43 runs from their combined six innings.
But they were more at home on the accommodating Saxton Oval where Dilshan took 92 balls for his 91 and stood in partnerships of 98 with Gunathilaka and 111 with Thirimanne.
New Zealand strike bowlers Tim Southee and Adam Milne were belted out of the attack in five overs.
Doug Bracewell was brought on in the sixth over to arrest the onslaught only to have Gunathilaka smack his first ball for six to bring up Sri Lanka’s 50.
It was the introduction of New Zealand’s fourth quick, Mitchell McClenaghan, that snapped the opening stand when Gunathilaka was caught by Ross Taylor at first slip for 65.
Dilshan was run out when turned back by Thirimanne when attempting a difficult single.
In contrast to Sri Lanka’s rollicking performance, the New Zealand innings showed signs of rust after so few batsmen had a chance to get in the middle in the first two games.
Kane Williamson’s 59 was the only score to better a half-century.
Williamson, deputising as captain in place of the injured Brendon McCullum, was dropped on 30 and added a further 29 runs before meekly yielding his wicket when he slapped a full toss from Siriwardana to Dushmantha Chameera at mid-on.
Chameera had an impressive game, as did the other Sri Lankan novice Jeffrey Vandersay.
In addition to the valuable catch to remove Williamson, the 23-year-old Chameera claimed the wickets of Martin Guptill (30) and Henry Nicholls (20) and ran out Mitchell Santner (38).
When New Zealand looked to be lining themselves up for a big score on a wicket that suggested an innings of 300-plus, Vandersay removed Tom Latham for 42 and Ross Taylor without scoring in three deliveries.
They were the first ODI wickets for the 25-year-old leg-spinner playing in his second international.
Bracewell’s career best 30 off 34 and Southee’s 18 off four balls in the final over gave the New Zealand innings a late boost.
The fourth ODI is in Nelson on Saturday.