The Indian eves roared back in style after they were outclassed by Bangladesh in their previous fixture and kept their finals hopes alive with an improved all-round show, defeating Sri Lanka by seven-wickets.
After two facile victories over Thailand and Malaysia, India were handed a reality check in their last game by Bangladesh, who notched up a comprehensive seven-wicket win to record their maiden international win over their neighbours across any format.
India, however, dished out an improved performance on Thursday with left-arm spinner Ekta Bisht (2/20) snapping two wickets and effecting two run-outs, while Jhulan Goswami (1/20), Anuja Patil (1/19) and Poonam Yadav (1/23) taking one wicket each to restrict Sri Lanka to 107 for 7.
India then rode on some useful contributions by the top and middle order to overhaul the target, reaching 110 for 3 with seven balls to spare.
Chasing 108 for a win, openers Mithali Raj (23) and S Mandhana (12) got good starts before they were sent back to the pavilion with India at 55 for two in 11.2 overs. Skipper Harmanpreet Kaur then cracked a 25-ball 24 laced with two fours before India were reduced to 70 for 3.
V Krishnamurthy (29) and Anuja Patil (19) then shared a 40-run unbeaten partnership off 32 balls to take India home.
India, Pakistan and Bangladesh currently have six points each from four games. But, India are leading the standings with a net run-rate of +2.709.
Harmanpreet Kaur and Co. will have to beat arch-rivals Pakistan in their must-win last game on Saturday to make it to the finals.
Earlier, skipper Shashikala Siriwardene's decision to bat first backfired as they lost wickets in regular intervals to post 107 for 7.
Hasini Perera (46 off 43 balls) did the bulk of scoring for the Lankans with the help of four boundaries, while opener Yasoda Mendis hit a patient 39-ball 27 but none of the other batswomen could reach double figures.
On Saturday, India will play Pakistan while Bangladesh will face Malaysia.
Sri Lanka: 107 for 7 in 20 overs (Hasini Perera 46; Ekta Bisht 2/20)
India: 110 for 3 in 18.5 overs (V Krishnamurthy 29; Oshadi Ranasinghe 1/15).
(With PTI Inputs)