Pathum Nissanka century earns Sri Lanka Cricket World Cup berth
Sri Lanka move to eight points in the Super Six stage of the preliminary tournament and cannot finish outside of the top two teams, who both earn a place at finals which will be played from October 5-Nov. 19.
Zimbabwe have six points and remain in contention, but must beat Scotland (four points) in their final game on Tuesday to make sure.
Sri Lanka chose to field first and restricted Zimbabwe to 165 all out in 32.2 overs as off-spinner Maheesh Theekshana claimed career-best figures of 4-25 and Dilshan Madushanka took 3-15.
Sri Lanka never looked troubled in their reply and reached their target with 101 balls remaining as Nissanka bagged his second One-Day International century from 102 balls to guide his side to victory.
"We knew with the team we have got, we were going to qualify for the World Cup," Sri Lanka captain Dasun Shanaka said at the post-match presentation.
"Credit to the other teams, they played really well in the tournament. Some teams gave us a good fight but we were the better side.
"It's a big achievement (to qualify for the World Cup) and you know what we have done in the past in World Cups. It is a much-needed thing for Sri Lanka to play on that big stage."
Sri Lanka have appeared at every World Cup and were victorious in 1996 as they beat Australia in the final.
Zimbabwe captain Sean Williams says they will take the result on the chin and look forward to playing Scotland.
"I don't think we need to prepare any differently from what we have been doing in this tournament," he said. "We have been playing some very good cricket. Sri Lanka were just much better than us today."
Two-time winners West Indies have failed to qualify for the first time after they lost to Scotland in their qualifier in Harare on Saturday.