India did well to reach 267/9 after a shaky start before putting up an impressive effort with the ball to dismiss Sri Lanka for 170 in 42.4 overs.
The batting stars were Anmolpreet Singh (72 off 92) and Sarfaraz Khan (59 off 71), who amassed his fourth fifty plus scores in five innings player in the tournament.
The three time champions now await either West Indies or hosts Bangladesh in the final to played on February 14.
"Anmolpreet and Sarfaraz brought us back in our innings and then the bowlers kept the pressure to restrict Sri Lanka. The final will be a new game. We have to prepare well and be ready for the challenge," he added.
More From This Section
Indians, put in to bat on an overcast morning, were put under pressure right away with its formidable opening pair of Rishabh Pant and Kishan falling cheaply to leave their team at 27/2 in the 10th over.
Batting was not easy but Anmolpreet and the in form Sarfaraz steadied the ship with a 96-run stand off 126 balls for the third wicket.
Anmolpreet, who struck half a dozen fours and a six during his stay at the crease, stitched another handy 70-run partnership with Washington Sundar (43 off 45) after Sarfaraz's departure.
India needed a move on in the last 10 overs and the late burst came courtesy Sundar and Armaan Jaffer, who smashed 29 off 16 balls before Mayank Dagar's 17-run cameo off 10 balls took his team to a competitive total in a crunch match.
India missed quite a few chances on the field but the bowlers were still good enough to keep things tight for the opposition. After a batting cameo, Dagar did his bit with the ball as well, grabbing 3/21 in 5.4 overs of his left-arm spin.
Pacer Avesh Khan, India's leading wicket-taker in the tournament, struck in the very first over, dismissing Avishka Fernando leg before wicket even though the ball appeared to be drifting down. Soon after, the run out of Kaveen Bandara made it 13 for 2 in the fourth over.