India destroyed Bangladesh's dreams of a famous win and put their semi-final bid back on track by taking three wickets off the final three balls of a pulsating World Twenty20 match in Bangalore.
Bangladesh needed to score just two runs off three balls to inflict a second defeat in three matches on the hosts - a result that would have pushed India to the brink of elimination - and earn their first ever T20 win over India.
But in a dramatic finish, Mushfiqur Rahim and Mahmadullah both holed out off Hardik Pandya before Mustafizur Rahman was run out attempting to complete a single that would have earned Bangladesh a Super Over, wicketkeeper MS Dhoni collecting the ball and sprinting to break the wicket.
The result means India, who made 146-7, restricted their opponents to 145-9 and now sit second in Group 2 on four points behind New Zealand, who have already qualified for the last four.
India made a measured start, scoring 27 off the first five overs before Rohit Sharma and Dhawan each struck Mustafizur for six.
The seamer quickly made amends, deceiving Sharma with a slower ball and three runs later Shakib Al Hasan trapped Dhawan lbw with a quicker ball to make it 45-2.
Virat Kohli looked good value to follow up his half-century against Pakistan with a second fifty as he shared a 50-run stand with Suresh Raina only to be bowled on the sweep by Shuvagata Hom.
India slipped to 112-5 as Al-Amin Hossain struck twice in as many balls, Raina lofting a simple chance to Rahman at mid-wicket before Pandya (15) was caught one-handed by a diving Soumya Sarka on the deep square boundary.
The task of bumping up the score fell to Dhoni and Ravindra Jadeja, who contributed 13 off 12 balls and 12 off eight balls respectively.
Tamim Iqbal, back in the side after illness, gave Bangladesh a strong start to their chase by flaying 35 off 32 balls at the top of the chase after Mohammad Mithun holed out to long on off Ravichandran Ashwin.
The opener struck five fours as he added 44 for the second wicket with Sabbir Rahman before becoming Dhoni's first victim of the innings, before advancing to be stumped after missing a mow across the line.
If that stumping was smart, the next was opportunistic as Dhoni collected a Raina delivery down the leg-side and dislodged the bails at the moment Rahman's feet left the ground.
Shakib Al Hasan, dropped on eight at deep cover by Ashwin, looked light he might take the game away from India quickly as he struck first Pandya and Jadeja into the stands but snicked a sharply-turning delivery to slip after Mashrafe Mortaza had his stumps rearranged by Jadeja.
With 52 runs needed off 47 balls, the onus fell on Sarkar and Mahmudullah to maintain the charge and they did admirably, adding 31 runs in 5.4 overs.
The pair took Bangladesh to within 21 of victory before Sarkar struck a Nehra full toss down the ground to Kohli but even then the odds were against the hosts as Pandya began the final over knowing 11 runs would spell defeat.
Mushfiqur Rahim cut for four, then scooped another boundary past Dhoni to give Bangladesh a clear advantage but then fell to hand India the opportunity of a spectacular comeback victory.
Watch highlights of India against Afghanistan at 10pm on Sky Sports 2. Before then, don't miss The Verdict at 7pm on the same channel.