Gautam Gambhir and Mahendra Singh Dhoni hit half-centuries before Harbhajan Singh smashed a six to help India beat Pakistan by three wickets with one delivery to spare in a thrilling finish in the fourth match of the Asia Cup, in Dambulla, on Saturday.
Set to score 268 for victory, Harbhajan slammed Mohammad Aamer over square leg for his second six of the innings to finish unbeaten on 15 from 11 balls. India replied with 271 for seven in 49.5 overs which took them to the final along with hosts Sri Lanka, while Pakistan and Bangladesh were eliminated.
India's run-chase was set up by half-centuries from Gambhir and Dhoni, who added 98 runs in 108 deliveries for the third wicket. Gambhir played a solid innings of 83, hitting six boundaries and a six in his 97-ball knock to register his second successive half-century in the tournament. Captain Dhoni scored a brisk 57 from 71 balls before he dragged a wide delivery down the leg side from Shoaib Malik back on to his stumps.
Suresh Raina held his nerves in the pressure situation as he brought India back with a quick innings of 34 from 27 balls, adding 43 runs in 25 balls with Harbhajan, before he was run out in the final over.
Virender Sehwag, who batted with a runner after struggling with cramps, struggled to 10 from 32 balls, before he was caught behind by wicketkeeper Kamran Akmal off Abdul Razzaq.
Earlier, half-centuries from Salman Butt and Kamran Akmal took Pakistan to a competitive 267 against India.
Left-hander Butt, who made 74 from 85 balls, gave Pakistan a good platform as he put on 71 runs for the opening wicket with Imran Farhat (25) and then added 73 runs for the second wicket with Shoaib Malik (39).
But India struck back with wickets at regular intervals before Kamran's quickfire innings of 51 from 41 balls boosted Pakistan's tally in the final overs.
Praveen Kumar did the most damage with the ball as he took three for 53 in his ten overs, while Zaheer Khan (two for 41) and Harbhajan Singh (two for 47) claimed a couple of wickets each.
Electing to bat first, Pakistan opted to bat with caution at the start of their innings, looking to preserve wickets.
Butt, who has scored five of his eight ODI hundreds against India, hit the first boundary of the match when he hit a full delivery from Ashish Nehra through the covers in the second over.Imran Farhat was consistently troubled by Praveen Kumar's swing but the left-hander was lucky to get back to back boundaries off the pacer courtesy of edges as Pakistan reached 21 for no loss after five overs.
But otherwise, it was a dull batting display by both the openers against the seamers.
With the pacers unable to make a breakthrough, India introduced Harbhajan Singh, who does not boast of a good record against Pakistan, having taken 10 wickets in 15 matches at an average of 71 and the move paid off.
Harbhajan claimed the first wicket of Imran Farhat, who was caught at first slip for 25 after adding 71 runs for the opening wicket with Butt.
Shoaib Malik got into the act immediately, looking to rotate the strike while playing the late cut against spinners with great success. He started by playing the late cut against Sehwag for a boundary and repeated the shot against Harbhajan for the same result a few overs later.
India found it hard to stop the duo as they kept getting singles at will, while hitting the odd boundary in between as they added 50 runs for the second wicket in just 45 balls.
Malik raced to 34 from 32 balls and Butt was looking solid on 59 from 72 balls as Pakistan reached 125 for one at the halfway stage.
Zaheer came back for his second spell and claimed the key wicket of Malik that saw Pakistan lose their way. Malik was beaten by a full delivery from Zaheer and was bowled for a brisk 39 from 46 balls.
And Butt joined him in the pavilion in the next over, when he was run out courtesy of a brilliant piece of fielding by Ravindra Jadeja off his own bowling after a fine knock of 74 from 85 balls, having hit nine boundaries.
Newcomer Umar Amin (5) didn't survive for long before he was scalped by Harbhajan and it was made possible because of a magnificent catch from Virat Kohli at first slip, diving full length to his left.
Just like he did to Muttiah Muralitharan, Shahid Afridi went straight after India's main spinner Harbhajan, hitting him for a straight boundary and six.
Jadeja then struck at the other end when he had Umar Akmal caught on the leg side off an inside edge by Dhoni for 21.
That wickets saw Indian bowlers tighten the noose with a few tight overs. Nearly seven overs went without a boundary much to the frustration of Afridi, who tried to break the shackles. He got a lifeline on 32 when his powerful shot down the ground was floored by Zaheer on his follow through, in the 43rd over.
But Afridi could not capitalise on that reprieve when he was trapped leg before wicket by Kumar in the next over for a quick 32 from 25 balls.
Abdul Razzaq also failed to shine with the ball and was caught behind by Dhoni as he tried to hit Kumar down the ground for three.
Akmal tried to lift the tempo with a six each in back to back overs off Kumar and Nehra respectively. But wickets continued to tumble at the other end with Mohammad Aamer dismissed run out for three by a direct hit from Rohit Sharma.
Akmal brought up his half-century in some style off 40 deliveries when he lifted Kumar for a six and boundary off consecutive deliveries. But the bowler had his revenge when Akmal failed to connect to a full toss attempting another huge hit through midwicket and was caught by Raina on the leg side after a cracking knock of 51 from 41 balls.
The innings ended in the final over when Saeed Ajmal (0) holed out to Nehra at mid-off to give Zaheer his second wicket as Pakistan were bowled out for 267 in 49.3 overs.
India also adopted a cautious approach at the their start of their innings. Virender Sehwag took 12 deliveries to get off the mark with a single, while Gautam Gambhir also concentrated on preserving the wickets in the early overs.
Gambhir finally found the middle of the bat when he cut a short delivery from Mohammad Aamer over point for a boundary and in the same over guided one past the slip fielder for another four.
Meanwhile, Sehwag struggled with cramps and called for Suresh Raina as his runner in the sixth over. A hobbling Sehwag finally got his first boundary of the innings when he smashed a full delivery from Aamer over the cover region, in the eight over.
Sehwag's painstaking innings ended a couple of overs later when he was caught behind off Abdul Razzaq for 10 from 32 balls.
Virat Kohli hit a boundary early in his innings when he drove Aamer down the ground, but he and Gambhir most relied on singles during their partnership.
Kohli was unlucky to lose his wicket when he inside edged a short delivery from Saeed Ajmal to be bowled for 18, in the 18th over.
After 20 overs, India reached 99 for two, with Gambhir unbeaten on 55 from 56 balls, needing another 169 from the last 30 overs.
Captain Mahendra Singh Dhoni was also content to milk the spinners around and got his boundary off the 25th ball he faced when he slammed a full toss from Afridi down the ground, in the 27th over.
With every passing over, Dhoni's confidence seemed to be growing as he proved when he danced down the wicket to Shoaib Malik and hit him for a straight boundary.
In that same over, Gambhir (69 from 82 balls) got a lifeline when his inside out shot was floored by Aamer on the cover boundary as India reached 143 for two after 30 overs.
In his next over, Gambhir rubbed further salt on Malik's wounds when he charged down the wicket and lifted him over the sight screen for the first six of the innings.
Dhoni completed his half-century in some style off 53 balls when he flicked a full toss from Shoaib Akhtar over midwicket for a six to take the total to 179 for two after 35 overs.
Pakistan struck against the run of play when Ajmal struck with the key wicket of Gambhir, who was bowled after a fine innings of 83 from 97 balls, with the help of six boundaries and a six.
Rohit Sharma got into the act straightaway as he hit Akhtar for two boundaries, while being dropped off the last delivery of that over by wicketkeeper Akmal.
Once again when India were looking to build a partnership, they lost another wicket. Sharma was beaten by the quicker delivery from Afridi that trapped him leg before wicket for 22.
In the next over, their position worsened when captain Mahendra Singh Dhoni dragged a wide delivery from Malik down the leg side back on to his stumps. Dhoni made 56 from 71 balls with the help of two boundaries and a six, but his wicket tilted the balance in Pakistan's favour.
India took the batting Powerplay at the start of the 44th over but both Ravindra Jadeja and Suresh Raina failed to get the big hits against Akhtar's pace.
The pressure paid off when Jadeja charged down the wicket to Ajmal but was beaten in the flight and bowled for six.
Raina brought some relief to the Indian camp when he cut a short delivery from Ajmal through point for a boundary and then smashed a six over long-on.
Harbhajan Singh also joined in the party when he slammed Akhtar over midwicket for a huge six to bring down the equation to 27 needed from the remaining 18 deliveries. Raina got the all-important boundary in the next from Aamer as he flicked a full delivery through midwicket as India reached 252 for six after 48 overs, with 16 needed from the last two overs.
The youngster then swung Akhtar against the line to lift him over the square leg fence for a six to put India on top. However, Harbhajan wasted the last two deliveries of that over to leave the equation at seven needed from the final over.