Invited to bat, India posted a below-par 133 for eight against New Zealand in the crucial group A match with Shafali top-scoring with a 34-ball 46 and Taniya Bhatia chipping in with a 25-ball 23.
India, however, produced a disciplined performance with the ball to restrict New Zealand to 129 for six and register their third successive win in the tournament.
With this win, India topped Group A, having beaten Australia and Bangladesh in their last two outing.
Defending the total, India introduced spin straight away but Deepti Sharma bled 12 runs with opener Rachel Priest (12) hitting her for two boundaries.
But experienced pacer Shikha Pandey removed Priest in the next over when she had her caught at mid wicket.
With Shikha and left-arm spinner Rajeshwari Gayakwad bowling in tandem, New Zealand played with caution to reach 28 for one.
Back into the attack, Deepti then cleaned up Bates with a beauty of a delivery as New Zealand slipped to 30 for two.
Poonam Yadav and Radha Yadav then mounted the pressure on the Kiwis and soon the Black Caps were 34 for 3 when the former dismissed skipper Sophie Devine (14).
Maddy Green (24) and Katey Martin (25) then tried to resurrect the innings with a 36-ball 43-run stand.
However, Gayakwad returned to remove Green, who danced down the pitch only to end up with an outside edge as Bhatia did the rest.
Radha then dismissed Martin to leave New Zealand at 90 for 5 in 16.3 overs.
Needing 44 off 21 balls, Kerr (34) blasted four boundaries to accumulate 18 runs in the penultimate over bowled by Poonam to bring the equation down to 16 off six balls.
In the final over, Heyley Jensen (11) and Kerr cracked a four each but Shikha held her nerves in the end to complete the win.
Earlier, 16-year-old Shafali provided the fireworks as India scored 49 for one in the powerplay overs. But they lost six wickets for 43 runs to squander the good start.
Smriti Mandhana (11), who returned to the playing XI after missing the last match due to illness, departed early but Shafali and Taniya (23) kept the scoreboard ticking, adding 51 runs for the second wicket.
In the 10th over, Taniya was caught by Amelia Kerr at backward point, while Jemimah Rodrigues (10) was caught by Kerr in the 12th over as India slipped to 80 for 3.
Skipper Harmanpreet Kaur’s (1) poor form also continued as she was soon back to the hut after being caught and bowled by Leigh Kasperek.
Shafali, who was dropped at long-on in the 8th over and at mid-wicket in the 10th over, then holed out to Jensen at deep extra cover. She had four hits to the fence and three maximum shots in her innings.
Left-handed batter Deepti Sharma (8) and Veda Krishnamurthy (6) brought up the 100 in the 15th over but both departed soon as India slumped to 104 for 6.
Radha Yadav then blasted 14 off nine balls, which included a six in the final over, to give some respectability to the total.
India women: 133 for 8 in 20 overs (Shafali Verma 46; Amelia Kerr 2/21).
New Zealand women: 129 for six in 20 overs (Amelia Kerr 34 not out; Shikha Pandey 1/21).