Perera claimed four wickets to lead an inspired Sri Lankan bowling attack that limited Zimbabwe to 198 all out before his unbeaten 39 helped the islanders to chase down their target in 44.5 overs.
Sri Lanka were in trouble at 145-5 before skipper Dinesh Chandimal (38 not out) and Perera put on an unbeaten 57-run stand for the sixth wicket.
Perera, who bats left-handed, sealed the win with a six to keep Sri Lanka´s tournament hopes alive after they lost against Zimbabwe and hosts Bangladesh.
Zimbabwe paceman Blessing Muzarabani claimed three wickets to rattle the Sri Lankan top-order after opener Kusal Perera´s dominating 49.
But the day belonged to Thisara Perera, who soon took the attack to the opposition with his 26-ball knock that was laced with a four and 3 sixes.
Chandimal, leading the side in place of injured Angelo Mathews, played the sheet anchor´s role to perfection during his 71-ball stay.
Earlier Perera ran through the Zimbabwe top-order, grabbing the most vital wicket of Brendan Taylor, who top-scored with 58 before his side were bowled out in 44 overs.
The 28-year old Perera, who bowls medium-pace, was ably supported by fellow paceman Nuwan Pradeep (3-28).
Left-arm wrist spinner Lakshan Sandakan took two wickets before Pradeep wiped off the Zimbabwe tail including the prized wicket of skipper Graeme Cremer for 34.
The win kept Sri Lanka in the hunt for a spot in the final as they still have a game in hand against Bangladesh.
Zimbabwe, who beat Sri Lanka by 12 runs in their first match of the tournament, also can qualify for the final if they can beat the hosts in their next match on Tuesday.