Captain Charlotte Edwards (17) led England to their 86-run target with 24 balls remaining after Sri Lanka won the toss and elected to bat.
Sarah Taylor top scored with 36 runs for England and three wins out of four in the group clinched their place in the semis.
Edwards said: “We had a bit of a blip in the first game but the way we have bounced back and the performances we’ve put in have been outstanding.
“We are in a good place now going into the semi-final stage of this tournament. We’re showing some really good signs and getting better by the game.
“This is the part of the tournament you look forward to, playing in front of big crowds and on television. That excites our team.”
Earlier, Shashikala Siriwardene with38 not out led the way as Sri Lanka posted a dire total of 85 for 9, leaving England with a great chance to progress.
England bowler Anya Shrubsole, the leading wicket-taker in the tournament with combined figures of 10-57 from 16 overs, again impressed with figures of 3 for 9, with Rebecca Grundy and Jenny Gunn claiming two wickets apiece.
Edwards’ team are joint top of Group B with West Indies, but the latter could still finish as group winners as they have a game in hand.