Veteran spinner Rangana Herath grabbed 3-25 to lift hosts Sri Lanka into the World Twenty20 final with a 16-run victory over Pakistan in Colombo on Thursday.
Sri Lanka, restricted to 139-4 after electing to bat, hit back to keep Pakistan down to 123-7 in a thrilling semi-final before 35,000 screaming fans at the Premadasa stadium.
Herath, the 34-year-old left-arm spinner playing only his sixth T20 international, was supported by two wickets each from seamer Angelo Mathews and unorthodox spinner Ajantha Mendis.
It was Sri Lanka's second appearance in the World Twenty20 final, having lost to Pakistan in the 2009 title clash at Lord's.
It was also the first time in four editions of the tournament that began in 2007 that a host country had made it past the semi-final round.
Rival captains Mahela Jayawardene and Mohammad Hafeez top-scored for their teams with 42 each, but the other batsmen struggled to force the pace on a sluggish pitch that hampered stroke-making.
Sri Lanka wasted a sound start to plod to 123-4 in 19 overs, before Thisara Perera smashed three boundaries in the final over of seamer Umar Gul, which realised 16 runs.
Pakistan's openers Hafeez and Imran Nazir began the reply on a confident note, putting on 31 for the first wicket in six overs.
Mendis, brought on to send down the sixth over, broke the stand with the last delivery by bowling Nazir for 20.
Pakistan moved to 55-1 in the ninth over when Mathews grabbed two wickets in four balls to swing the match Sri Lanka's way.
Mathews first had Nasir Jamshed leg-before -- an unfortunate dismissal for the batsman since replays showed the ball pitch outside the leg-stump -- before getting Kamran Akmal caught at mid-wicket.
In the next over, Herath bowled new batsman Shoaib Malik for six to leave Pakistan tottering at 64-4 in 11 overs.
Hafeez, dropped by Lasith Malinga on 24, added 18 more runs when he was stumped off Herath, who then bowled Shahid Afridi first ball.
Earlier, Sri Lankan openers Jayawardene and Tillakaratne Dilshan put on 63 in 10 overs, a slow start by Twenty20 standards but crucial nevertheless with their team having all their wickets in hand.
Jayawardene liberally employed the reverse sweep during his knock of 42 off 36 balls, but was caught at fine-leg while attempting the same shot off Afridi.
Kumar Sangakkara made a promising 18 from 11 balls when he was snapped up on the long-on fence as he tried to hit Hafeez out of the ground.
Gul was unlucky to see the TV umpire declare a no-ball after he had Jeevan Mendis given out leg-before in the 18th over.
But Gul removed Dilshan two balls later with another leg-before decision that made Sri Lanka 117-3.
Dilshan was unusually subdued during his innings, taking 43 balls to score 35 with the help of three boundaries.
Australia and the West Indies will clash in the second semi-final on Friday. The final is scheduled for Sunday.
Sri Lanka: 139 for four in 20 overs (Mahela Jayawardene 42, Tillakaratne Dilshan 35; Mohammad Hafeez 1/12).
Pakistan: 123 for seven in 20 overs (Mohammad Hafeez 42, Umar Akmal 29 not out, Rangana Herath 3/25).