Inaugural champions India put a foot in the semi-finals of the T20 World Cup following their nervy five-run victory against Bangladesh in a rain-hit Group 2 humdinger in Adelaide on Wednesday.
Virat Kohli made an unbeaten 64 to maintain his red-hot form and KL Rahul (50) ended his run drought as they fired India to a commanding 184-6 at the Adelaide Oval.
Chasing a revised target of 151 in 16 overs following a rain interruption, Bangladesh looked on course with Litton Das (60) going great guns but his exit unhinged his side who eventually finished on 145-6.
India moved to the top of Group 2 with six points, one ahead of South Africa who have played one game fewer.
"Shortened games can go either way, but we held our nerves pretty well when the game started after the break. Some of the catches we took today under pressure, it was great to watch," India captain Rohit Sharma said.
Put into bat, India did not have the best of starts with Taskin Ahmed proving quite a handful, even though the seamer went wicketless.
Hasan Mahmud (3-47) dropped Rohit in the deep but almost immediately made amends dismissing the batter for two.
Kohli, who was adjudged Player of the Match, did not look convincing initially, but was soon in his element, while Rahul also looked in great touch at the other end.
With scores of 4,9,9 in his previous three matches, Rahul was under pressure to justify his selection and the opener responded by clubbing four sixes en route to a 31-ball fifty as India reached 86-2 at the halfway stage.
Suryakumar Yadav played a typically breezy 30 off 16 balls on a day when he replaced Pakistan's Mohammad Rizwan as the top-ranked T20 batter.
Kohli accelerated in the penultimate over, registering his third fifty in four innings and also overtook Sri Lanka's Mahela Jayawardene as the leading run-getter in the history of the tournament.
Litton gave Bangladesh a rollicking start scoring 56 of Bangladesh's 60 runs in the first six powerplay overs.
He raced to a 21-ball fifty before rain halted play with Bangladesh on 66 for no loss after seven overs.
When play resumed with a revised target, Das was beaten by Rahul's direct throw from deep midwicket and it triggered a batting collapse.
Bangladesh needed 20 from the last over from Arshdeep Singh and Nurul Hasan hit a six and a four but it was not enough in the end.
"It's been the story when we play India. We're almost there but we never cross the finishing line. It was a great game, the crowd enjoyed it and both teams enjoyed it. In the end, someone has to win and someone has to lose," Bangladesh captain Shakib Al Hasan rued.
Earlier, Zimbabwe's hopes of reaching the semi-finals effectively evaporated following their five-wicket defeat by the Netherlands.
Zimbabwe were all out for 117 in 19.2 with only Sikander Raza (40) and Sean Williams (28) reaching double digits.
Max O'Dowd led Netherlands' reply with 52 and Tom Cooper made 32 as the Dutch side, who have already crashed out, registered their first Super 12 win with two overs to spare.
T20 WC PIX: India survive Bangladesh scare
Aus chief selector's advice: Forget the permutations
PICS: Netherlands dash Zimbabwe's semi-final hopes
Gill's ton guides Punjab to semis; Mumbai advance