Sri Lanka were set a target of 218 to beat New Zealand in their World Cup semi-final on Tuesday as Muttiah Muralitharan marked his final international on home ground with a wicket off his last ball.
Scott Styris hit a resolute half century at the R. Premadasa stadium but none of the other batsmen could stay long enough to give a final flourish to the innings.
Ajantha Mendis (3-35) and Lasith Malinga (3-55) kept it tight after Daniel Vettori won the toss and batted.
Styris added 77 for the fourth wicket with Ross Taylor (36) but the Sri Lankan bowlers never allowed them to run away with a big total, dismissing the Kiwis in 48.5 overs.
Off-spinner Muralitharan, playing his last international match in Sri Lanka, finished with 2-42, dismissing Styris lbw off the last ball he bowled before a capacity 35,000 home crowd.
The 38-year-old, who has already quit Test cricket, has a chance to play his last one-day match in Mumbai if Sri Lanka qualify for the April 2 final.
Styris and Kane Williamson (22) added 42 in the batting power-play but New Zealand lost their last seven wickets for just 56 runs.
Sri Lanka once again dismissed hard-hitting Brendon McCullum through a spinner when left-armer Rangana Herath bowled him in the eighth over for 13.
Martin Guptill (39) and Jesse Ryder (19) took the total to 69 before Muralitharan had the big left-hander caught off a quickish delivery.
Soon it became 84-3 when Malinga bowled Guptill with a ferocious yorker after the opener had hit three boundaries off 65 balls.
Styris hit five boundaries during his 77-ball knock.
Sri Lanka started on a positive note when Muralitharan was declared fit to take the field, after being doubtful because of injury.
His inclusion meant Sri Lanka played with the same three spinners with which they beat England by 10 wickets in the quarter-finals.
New Zealand brought in left-arm paceman Andy McKay in place of Luke Woodcock who was part of the team which beat South Africa in quarters.