Disciplined bowling by India saw them beat Pakistan by 29 runs on Wednesday to set-up a World Cup final against Sri Lanka in Mumbai on Saturday.
Pakistan, chasing 261 for victory, were dismissed for 231 with a ball to spare after all of India's five bowlers took two wickets apiece.
Misbah-ul-Haq, who top-scored for Pakistan with 56, helped take them from 208 for nine to a situation where an unlikely 30 was needed off the last over.
But Zaheer Khan held his nerve, bowling four dot balls before Misbah holed out to Virat Kohli to the delight of a capacity crowd.
India's 260 for nine after winning the toss against their arch-rivals was built around man-of-the-match Sachin Tendulkar's 85.
But they might have made considerably less had not the star batsman been dropped four times in an innings that still left him one short of a hundred international hundreds.
Left-arm fast bowler Wahab Riaz led Pakistan's attack with career-best figures of five for 46.
Pakistan saw Kamran Akmal start their pursuit with a first ball four off Zaheer.
But the left-arm quick had his revenge with a slower ball the opener sliced to Yuvraj Singh at point to leave Pakistan 44 for one.
Mohammad Hafeez made 43 before he was caught behind after trying to sweep seamer Munaf Patel.
Yuvraj, out for a golden duck, atoned in front of his home crowd with two wickets for no runs in five balls as Pakistan slumped to 106 for four.
The left-arm spinner bowled Asad Shafiq (30) as the batsman made room to cut and then had the experienced Younus Khan (13) caught at cover by Suresh Raina.
Umar Akmal, however, counter-attacked in trademark style, pulling and driving Yuvraj for the first two sixes of the match.
But on 29 he was bowled by an arm ball from local hero Harbhajan Singh to leave Pakistan 142 for five.
Pakistan required 84 off the last 10 overs and needed a big innings from big-hitting but out of form skipper Shahid Afridi.
Afridi only managed 19 before he sliced Harbhajan to Virender Sehwag at cover-point and at 184 for seven the game was almost up for Pakistan.
Earlier, the 25-year-old Riaz kept his side in the match.
Riaz, on as first change, struck fifth ball when he had dangerman Sehwag, hitting across the line, lbw for 38 including nine boundaries.
Tendulkar, opening with Sehwag, subsequently square-drove Riaz for four to become the first batsman ever to score 400 runs in three separate World Cups.
But off-spinner Saeed Ajmal nearly had him out twice in successive balls for 23, a reviewed lbw and tight stumping call both going against Pakistan.
Then, on 27, Tendulkar pulled leg-spinner Afridi hard to short mid-wicket only for Misbah to drop the catch.
Tendulkar was dropped again, on 45, when Younus at mid-off failed to hold on to a mistimed drive off leg-spinner Afridi.
Riaz, however, had Kohli caught by Umar Akmal at backward point and next ball clean bowled Yuvraj with a swinging full toss.
Tendulkar was given a third reprieve by Pakistan on 70 when wicketkeeper Kamran Akmal failed to hold a tough chance off an edged Afridi leg-break.