Chasing 297 for victory, Sri Lanka rode on a 129-run stand between man-of-the-match Chandimal (75) and Asalanka (71) to achieve the target with nine balls to spare and take a 1-0 lead in the three-match series in Kandy.
Opener Pathum Nissanka made 75 to set up the chase on a batting-friendly wicket. Sean Williams scored 100 in Zimbabwe’s 296 for nine in 50 overs.
“Our batsmen showed the class and maturity during the chase,” skipper Dasun Shanaka said after the win.
“Credit to Nissanka, Asalanka and Chandimal. We got lot of players on the bench as well. We would want to consider them in the upcoming games.”
Nissanka put on key partnerships including an opening stand of 40 with Kusal Mendis.
Blessing Muzarabani sent back Kusal for 26 and Richard Ngarava bowled Kamindu Mendis to check Sri Lanka.
Nissanka, who combined with Chandimal for a 66-run stand, raised his maiden ODI fifty in 48 balls amid raucous applause from the home crowd.
He fell while attempting to hit a wide delivery and got caught behind off Sikandar Raza.
But the right-left batting pair of Chandimal and Asalanka combined to take the attack to the opposition before losing their wickets.
Chandimal fell to Ngarava who also got Asalanka trapped lbw, but Shanaka and Chamika Karunaratne completed the win.
Earlier the left-handed Williams recorded his fifth ODI century after the tourists elected to bat first.
Regis Chakabva, who hit 72, and debutant Takudzwanashe Kaitano, who made 42, set up the batting charge with an opening stand of 80.
Jeffrey Vandersay broke the partnership with his leg spin and denied Kaitano a fifty in the batsman’s first international but Chakabva kept up the attack.
He made the most of a dropped catch on two to raise his fourth ODI half-century before being caught behind while attempting a slog sweep.
Williams, who hit nine fours and two sixes in his 87-ball knock, reached his fifty in 52 balls.
He was finally bowled by Karunaratne, who finished with three wickets including two in the final over, which ended with a six and four by Ngarava.
“We are pretty disappointed that we didn’t come out with a win. We were probably 20 or 30 short,” said skipper Craig Ervine.
The second match is on Tuesday at the same venue.
The three-match series offers crucial Super League points needed for an automatic qualification for the 2023 50-over World Cup.
The top eight teams will get a direct entry into the tournament.
Sri Lanka, who are missing several key players including Wanindu Hasaranga and Dhananjaya de Silva, are currently seventh while Zimbabwe are bottom in 13th spot.