Sri Lanka's spinners made most of a slow wicket at the R Premadasa stadium in Colombo to take the hosts past Pakistan by 16 runs in the first semi-final of the World Twenty20 on Thursday.
Left-arm spinner Rangana Herath claimed three wickets for 25 runs while Ajantha Mendis took two for 27 as Pakistan, chasing 140 for victory, were restricted to 123 for 7 in their 20 overs.
Captain Mohammad Hafeez, who benefited from two dropped catches as he struggled his way to 42 from 40 balls, was Pakistan's top scorer, as batsmen from both teams found it difficult to come to terms with a wicket that offered a lot of assistance to spin.
Pakistan needed 32 runs off last three overs, which is considered quite achievable by Twenty20 standards, but Mendis and Lasith Malinga held their nerves, giving only five and four runs respectively off the 18th and 19th over.
Nuwan Kulasekara, who bowled the 20th over, didn't have any pressure on him as he conceded only seven runs to send the capacity crowd into raptures.
Herath used the conditions to perfection as he recorded his best figures in four overs, while Malinga gave only 19 runs in his four overs.
Chasing a target of 140 was a tricky one on the slow Premadasa track as batsmen often got confused whether to attack or rotate the strike. Imran Nazir was in his element as he tried to hit each and every ball out of the sight but failed to connect most of them before dragging one off Mendis onto his stumps.
Nazir made 20, which included three fours.
Then Angelo Mathews lifted the hosts, trapping the in-form Nasir Jamshed leg before and deceived Kamran Akmal with a slower one.
From 57 for three, Pakistan were soon 64 for four, as Herath bowled Shoaib Malik with a classical left-armer's delivery. He flighted one to invite Malik for a drive and the ball turned a shade after pitching to knock the batsman's off-stump.
Having got a reprieve on 24, Hafeez, who till now was happy to play the waiting game, chanced his arms. First he pulled Mathews for a boundary and then reverse swept Herath. He followed it up with a straight six.
But Hafeez finally departed for 42 when he was stumped trying to give Herath the charge.
Shahid Afridi's woeful time with the bat continued as Herath cleaned up in the next ball to register his third wicket.
Pakistan were tottering at 91 for six at that stage and from there victory became out of question.
Earlier, helped by some scratchy batting by opener Tillekaratne Dilshan, Pakistan's bowlers restricted Sri Lanka to a modest 139 for four.
While skipper Mahela Jayawardene provided the right start with a 36-ball-42, Dilshan struggled throughout the middle overs, scoring only 35 off 42 balls.
The Lankans scored 16 runs in the last over, Thisara Perera hitting a couple of fours and Angelo Mathews getting a thick edge, which gave some respectability to the total.
Shahid Afridi, Mohammed Hafeez, Umar Gul and Saeed Ajmal got a wicket each but, more importantly, did not go for too many runs.
The decision to promote left-hander Jeevan Mendis above Mathews and Perrera was baffling, as the former played a lot of dot balls that added to the pressure on Dilshan.
Jayawardene's batting was a treat to watch. He perished trying to play the sweep shot once too often.
A shrewd thinker, Jayawardene observed that off-spinner Ajmal, with his doosras, leg-spinner Afridi and slow left-arm orthodox Raza Hassan were all spinning the ball away from him, and, in the circumstances, found the reverse sweep as the safest option and played it with consummate ease.
He started with a slog sweep of Hassan and then got a couple of boundaries off Ajmal the first one was a lap shot over short fine leg and then a reverse sweep.
Watching Jayawardene take charge, Dilshan, who started off on a rousing note with two boundaries in the first two overs, played second fiddle.
The Lankan captain first reverse swept Afridi for a boundary and then, in the bowler's next over, hit him over extra-cover for another boundary to bring up the 50.
Such was Jayawardene's dominance that he scored 34 of the first 50 runs, with Dilshan's contribution being only 15.
In the 11th over, Afridi finally got his man when Jayawardene shuffled across the off-stump to play another lap-shot but didn't have the power to clear Hassan, stationed at short fine leg.
Jayawardene's 42 came off 36 balls, during which he struck seven boundaries.
New-man in Kumar Sangakkara started positively, hitting three lovely fours, but perished trying to be over-ambitious and holing out to Malik at long-on off Hafeez's bowling. He scored 18.
The home team brought up the 100 at the end of the 15th over, but it was a struggle thereafter.
Dilshan and left-hander Mendis played too many dot balls in that phase which increased the pressure on them. In fact, Dilshan's struggle was such that it took him 31 deliveries to hit his third boundary, having hit the second one in the second over.
Umar Gul, introduced in the 16th over, bowled fast and full to both Dilshan and Mendis to make their life miserable.
Mendis was adjudged leg before to a delivery that pitched in the block hole, but television replays showed that Gul had overstepped and the decision was reversed.
Finally, Gul ended Dilshan's misery with another fuller delivery that the batsman missed and was adjudged leg-before.
The Dilshan-Mendis duo could add only 33 runs in the five overs they played together.
Mendis was then stumped off an Ajmal delivery when he tried to give the charge after struggling for 18 deliveries for 15 runs.
Image: Rangana Herath of Sri Lanka celebrates with teammates after bowling Shahid Afridi.
Photograph: Gareth Copley/Getty Images