Left arm spinner Daniel Vettori returned career best figures of four for 14 on Monday as New Zealand clinched a nail-biting nine run tri-series victory over Sri Lanka.
Set a modest 157 run victory target, Sri Lanka were dismissed for 147 in the last over of the innings with Vettori the chief destroyer on a turning pitch.
The Kiwis have now automatically qualified for the final of the tournament, which also features Pakistan.
Vettori, who was used carefully by his captain Stephen Fleming, bowled four separate spells. He started his match-winning spell with the first ball wicket of number four batsman Kumar Sangakkara, who was bowled through the gate for 11.
Vettori then had Atapattu caught at cover for 13 and Dilshan caught at slip for seven to leave Sri Lanka tottering on 79 for five.
When both Chaminda Vaas and Kumar Dharmasena were both caught behind, Sri Lanka needed another 56 runs with only three wickets remaining.
Mahela Jayawardene and Kaushal Lokuarachchi edged closer to the target, adding 20 runs in 58 balls before Lokuarachchi was trapped lbw for eight by a Scott Styris inswinger.
Jayawardene added a further 15 runs in 32 balls with Muttiah Muralitharan but Vettori tempted Muralitharan (4) into an expansive lofted drive to claim his fourth wicket.
Last man Prabath Nissanka came to the crease with Sri Lanka still needing 21 runs from 31 balls.
Nissanka played out the penultimate over of the innings for a maiden to leave Jayawardene needing to score 10 runs from the last over of the match.
Jayawardene tried to reverse sweep the first delivery bowled by Styris to the unprotected off-side boundary but top edged a catch to backward point.
Earlier, Brendon McCullum featured with the bat for New Zealand, rescuing them from a parlous 88 for six.
The wicket-keeper batsman scored 47 from 63 balls, hitting three sixes and two fours, as New Zealand plundered 47 runs from the final five overs.