India retained the Asia Cup with a three-wicket win off the last ball against a fighting Bangladesh who were anchored by a maiden hundred from opener Liton Das in Dubai on Friday.
India made heavy weather of a modest 223-run target as Bangladesh fought for every run before the title holders achieved victory off the last ball watched by a capacity 25,000 holiday crowd at Dubai stadium.
Das held the innings together during his 117-ball 121 which featured a dozen boundaries and two sixes but Bangladesh, who were put into bat, were all out in 48.3 overs despite a solid opening stand of 120 with Mehidy Hasan.
With their settled opening pair of Rohit Sharma and Shikhar Dhawan, India were expected to run away with victory, like they did in the previous matches but Bangladesh were not ready to give up without a fight.
Dhawan was dismissed for 15 and Sharma for a punishing 55-ball 48, studded with three sixes and as many boundaries.
Dinesh Karthik (37) and Mahendra Singh Dhoni (36) added 54 for the fourth wicket but once both were dismissed Bangladesh looked like pulling off an upset.
Ravindra Jadeja (23) and Bhuvenshwar Kumar (21) brought the target within India's reach through a 45-run stand for the sixth wicket but Bangladesh removed them both with eight runs still needed.
India then required six off the last over and one off the final delivery which came as a leg-bye. Kedar Jadhav finished with 23 not out.
India won the Asia Cup — under a Twenty20 format — in Bangladesh in 2016.
Friday's result meant Bangladesh lost in a second Asia Cup final after coming up just short by two runs in the 2012 final against Pakistan at home.
Earlier Bangladesh lost all their wickets for 102 runs in a major middle-order collapse after a brisk opening stand of 120.
Hasan was promoted to open the innings and he and Das attacked India's pace-cum-spin attack.
But once Hasan was caught off Jadhav in the 21st over the innings collapsed with Bangladesh losing four more wickets by the time the score reached 151.
Hasan hit three boundaries in his 59-ball 32 while Soumya Sarkar made a 45-ball 33 with a boundary and a six.
Former captain Mushfiqur Rahim, who scored 144 and 99 earlier in the tournament, also hold out off Jadhav who finished with 2-41. Rahim made just five.
Bangladesh's cause was not helped by three run-outs while left-arm spinner Kuldeep Yadav returned with the best figures of 3-45.
After Rohit Sharma won the toss and opted to field first, Mehidy Hasan and Liton Das opened the innings for Bangladesh, whereas Bhuveshwar Kumar and Jasprit Bumrah shared the new ball for India.
While the Indian pace pair's opening spells had almost always troubled opposing pairs in the tournament, Hasan and Das had few such problems.
Das, in particular, seemed in fine nick, smacking Kumar for back-to-back boundaries in the 4th over, which forced Indian captain Rohit Sharma to introduced spin earlier than he'd have liked.
By the end of 5 overs, Bangladesh were 33-0 and looking quite comfortable.
Das went after Yuzvendra Chahal in the 8th over, launching him for two maximums and accelerate the scoring.The usually reliable Bumrah was also struggling against the Bangla basher; he was hit for a four in the 9th.
With Das on a roll, Hasan did the right thing by playing the facilitator rather than attempting to replicate what his partner was doing so well on the other hand.
At the end of the 10th over, Bangladesh were 65-0, with Das having raced to 47 off just 31 balls.
Following a brief lull, Das struck Jadeja for a 4 to open the 12 over — bowled by Ravindra Jadeja — before being dropped by Chahal two balls later.
Hasan drove Kuldeep Yadav for a four in the 15th, at the end of which the scoreboard read 86-0.
Das edged one to the third-man boundary to bring up Bangladesh's 100 in the 18th over, following which the teams took a drinks break.
Das played two fantastic sweep shots in the 20th over bowled by Jadeja and entered his 80s but the next over saw his opening partner Hasan depart as Indian finally found the elusive breakthrough.
Imrul Kayes walked in to join Das but his stay at the crease didn't last long as Chahal trapped him in front of the wickets in the 24th over. Kayes took the review but the umpire's call was upheld.
At the halfway mark, Bangladesh were 133-2, reeling from the twin setbacks but still confident of posting a sizable total.
However, their optimism flailed some more in the 27th and 28th minute when the in-form Musfiqur Rahim and Mohammad Mithun both departed to leave their side reeling.
Das brought up his maiden ODI century in the 29th over but the job was far from done; his side needed him to carry the bat.
The burden to carry on increased on Das some more in the 33rd over when Bangladesh lost their fifth wicket, this time Mahmudullah the one to depart.
Das and Soumya Sarkar plugged the leak and batted responsibly for the next seven overs, taking the score to 178-5 at the end of 40 overs.
The centurion's brilliant 121-run innings (off 117 balls) finally came to an end in the 41st over when he was stumped out by Yadav.
The decision was referred to the third umpire, who ruled in the bowler's favour despite there being considerable visual evidence to give the benefit of the doubt to Das.
Yadav was hit for a six in the 43rd over by Moshrafe Mortaza, who then tried to repeat the trick but instead fell for the bowler's repeat trick: a stumping dismissal.
The final three batters dragged Bangladesh to 222 before being all-out.
Bangladesh: Liton Das, Soumya Sarkar, Mohammad Mithun, Mushfiqur Rahim (wk), Imrul Kayes, Mahmudullah, Mehidy Hasan, Mashrafe Mortaza (capt.), Nazmul Islam, Rubel Hossain, Mustafizur Rahman
India: Rohit Sharma (capt.), Shikhar Dhawan, Ambati Rayudu, Dinesh Karthik, MS Dhoni (wk), Kedar Jadhav, Ravindra Jadeja, Bhuvneshwar Kumar, Kuldeep Yadav, Yuzvendra Chahal, Jasprit Bumrah