Rubel claimed two wickets in his four overs.
Captain Rohit Sharma led from the front as he scored a match-winning 56.
India needed 34 off the last two overs after Mustafizur Rahman had kept Vijay Shankar quiet in the 18th over, bowling four dot balls.
Karthik nonchalantly hit the final ball for a six to trigger wild celebration by a young India team which had rested regular skipper Virat Kohli and stumper Mahendra Singh Dhoni, among others.
However, in the following ball, Shankar departed for 17 runs and in came Washington Sundar.
1 - Dinesh Karthik is the first batsman to hit a six when 5 or more runs were required to win off the final delivery in T20Is.
Just when things seemed good in the middle, Rohit departed with Nazmul Islam picking up the crucial wicket in the 14th over. Will this change Bangladesh's fortunes?
16 - Number of 50+ scores for Rohit Sharma.
4 - Mahmudullah became the fourth Bangladeshi player to score 1000-plus runs in T20Is after Tamim Iqbal, Shakib Al Hasan and Mushfiqur Rahim.
Trump, Moon pledge to keep pressure on N.Korea
North Korea has previously indicated its nuclear weapons were only necessary to defend against a hostile US government. Its diplomatic mission in Pyongyang was the first Western embassy established in the country, in 1975.
WHAT AN OVER! It is Rohit Sharma all the way as he smacks two sixes and one four in this over.
However, a valiant effort by Sabbir Rahman powered Bangladesh to 166 with 77 runs to his name.
Since then, nothing seemed to work for them as they even lost their marquee batsman Musfiqur Rahim for nine runs. Huge blow for the Bangla Tigers. But then Mahmudullah (21) got run-out after being a little late in responding to Rahman's call. The Men in Green are in deep trouble now.
Chahal got his second wicket when an out-of-form Sarkar (1) tried to slog sweep a fuller delivery from Chahal with Shikhar Dhawan taking a simple catch at square-leg. Chahal celebrates his wicket.
WICKET! Washington Sundar has struck for India as he removes Liton Das courtesy a catch by Suresh Raina.
Here is how the teams will lineup for the tournament decider.
The Nidahas Trophy 2018 final between India and Bangladesh had all the ingredients to make it a blockbuster.
Karthik's gem of a cameo got him 29 off 8 balls with two boundaries and three sixes - the last of them which will be forever be etched in the memory.
However, they are yet to beat India in a T20I, and will hope to end their winless jinx. The match will also be telecasted on JioTV mobile application. The match will start at 7 PM Indian Time.