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.
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.
And he was on 81 when a leaping Umar Akmal at short mid-wicket dropped a checked drive against off-spinner Hafeez.
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.
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.
And he was on 81 when a leaping Umar Akmal at short mid-wicket dropped a checked drive against off-spinner Hafeez.