Coming in the second last over with scoreboard reading 133/5, Karthik announced his arrival at the crease through two sixes and a four in first three balls which narrowed the gap between remaining balls and required runs.
The drama unfolded in the last over when India needed five runs in the last ball. Kathik slammed a flat six over extra cover to clinch the issue.
Chasing 167, skipper Rohit Sharma (56) once again led from the front with his classy knock but failed to finish off the proceedings. Middle-order batsman Manish Pandey (28) played sensible innings but was dismissed when needed the most. Then came Karthik who took India to victory.
India started off on a steady note as openers Rohit and Shikhar Dhawan (10) scored 32 runs in three overs but then Dhawan was dismissed by Shakib Al Hasan.
Suresh Raina (0), who also played a crucial role along with Rohit in the last match could not disturb his score this time as the Uttar Pradesh batsman was dismissed in the very next over by Rubel Hossain.
But incoming batsman Lokesh Rahul (24) and Rohit forged a crucial 51-run partnership before Rahul was sent packing by Hossain in the 10th over.
Just when things seemed good in the middle, Rohit departed with Nazmul Islam picking up the crucial wicket in the 14th over. His 42-balls innings was laced with four boundaries and three sixes.
Needing 69 runs in 40 balls, it was all on new two new batsmen Pandey and Vijay Shankar (17). Pandey displayed some superb shots while Shankar also supported handsomely at the other end.
But with 37 needed in last three overs, Shankar played four dot balls which mounted the pressure and as a result, Pandey, while trying for a big one, was caught by Sabbir Rahman off Mustafizur Rahman. Pandey played 27 balls and slammed three boundaries.
Experienced batsman Karthik then joined Shankar and guided India to victory.
For Bangladesh, Hossain picked up two wickets.
Earlier, top-order batsman Sabbir Rahman dragged Bangladesh out of a hole with a well paced 50-ball 77 to help his team post a fighting 166/8.
After spinners Yuzvendra Chahal (3/18) and Washington Sundar (1/20) took four wickets between them to leave their rivals reeling at 68/4 at one stage, Sabbir mixed caution with aggression to hit seven fours and four sixes before Jaydev Unadkat (2/33) took his wicket.
In the last over, Mehidy Hasan (19 not out) took 18 runs off Shardul Thakur (0/45) who had a forgettable outing.
Openers Tamim Iqbal (15) and Liton Das (11) got off to a steady start but just when they looked to step on the gas, in-form Sundar put a spanner in their works, stretching his purple patch with the ball.
Sundar bowled a slower one just outside off stump, forcing Das into a slog sweep which went straight up in the air to Raina who completed an easy catch near short fine leg.
In the next over, the dangerous Iqbal followed suit thanks to an acrobatic catch by Thakur on the very edge of the long-on boundary off Chahal’s bowling.
Chahal removed Soumya Sarkar (1) in the same over, the batsman sweeping straigh to Dhawan at square leg, as Bangladesh looked in disarray inside the Powerplay tottering at 40/3 in six overs.
At the halfway stage, Bangladesh were 68/3 with Rahman and Mushfiqur Rahim (9) trying to stem the rot.
In the very first ball of the 11th over, Chahal grabbed his third wicket as Rahim miscued a widish googly, skying the ball over backward point where Shankar took a fine diving catch running to his right. The pair added 35 runs for the fourth wicket.
Mahmudullah (21), who hit the winning six in the last do-or-die game against hosts Sri Lanka, took time to get going and along with Sabbir looked to build a partnership.
Bangladesh struggled to find the boundary with Mahmudullah breaking a four-over drought with a sublime shot between backward point and short third man off Unadkat in the 13th over.
Mahmudullah’s run out brought an end to their patient association of 36 runs for the fifth wicket but Sabbir lived up to his reputation of a promising young player by smacking Shankar for two sixes in the 17th over and Sundar for one in the previous over.
In the 18th over, Rahman showed deft skills to and place the ball behind the wicket with exploit both third man and fine leg inside the ring for consecutive boundaries.
Trying to go for one too many, Rahman’s brilliant innings came to end with Unadkat ruffling his wickets to get his first wicket.
In the same over, Unadkat castled Hossain (0) and gave away just three runs to underline his potential as a death bowler.
Brief scores: Bangladesh 166/8 in 20 overs (Sabbir Rahman 77, Yuzvendra Chahal 3/18, Jaydev Unadkat 2/33) against India: 168/6 ( Rohit Sharma 52, Dinesh Karthik 29, Rubel Hossain 2/35)