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 be played on February 14.
Indians, put in to bat on an overcast morning, were put under pressure right away with its formidable opening pair of Rishabh Pant and captain Ishan 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.
While Anmolpreet's was a gritty 92-ball knock, power-hitter Sarfaraz too played a measured innings considering the circumstances. The 18-year-old IPL recruit, who came into the match with scores of 76, 21*, 74, 74, still managed to pierce the field for six fours and a maximum.
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.
Defending the target, the Indian bowlers did not allow the Lankan chase to take off.
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.
The chase was not a huge one but Sri Lankan batsmen failed to rotate the strike and a regular loss of wickets meant the asking run rate kept going up.
Sri Lanka's hopes of reaching their second ever final were all but over when the scoreboard read 133 for six in the 35th over.
Kamindu Mendis (39) and Shammu Ashan (38) got starts but failed to get that one big score needed to overhaul the target.
- Daily News