Chasing 179 at the R. Premadasa International Cricket Stadium, Zimbabwe reached the target with four wickets in hand in the final over, capping a commanding performance just days before the Super Eights stage.
Zimbabwe made a strong start through openers Bennett and Tadiwanashe Marumani, who added 69 runs for the first wicket. Marumani scored 34 off 26 balls, including five fours and a six, before being dismissed by Dunith Wellalage in the ninth over.
Ryan Burl then provided momentum with a brisk 23 from 12 deliveries, striking two fours and a six before falling to Sri Lanka captain Dasun Shanaka.
Raza joined Bennett and shifted the pressure firmly back onto the hosts, launching consecutive sixes to reduce the asking rate. The pair shared a rapid 50-run partnership, with Bennett bringing up his half-century as Zimbabwe tightened their grip on the contest.
Sri Lanka briefly threatened a comeback when Dushan Hemantha dismissed Raza for a blistering 45 off 26 balls, which included two fours and four sixes, and then removed Tashinga Musekiwa for one in the same over.
Needing eight runs from the final over, Tony Munyonga struck a towering six before Bennett sealed the chase. Bennett finished unbeaten on 63 from 48 balls, hitting eight fours, while Munyonga remained not out on eight as Zimbabwe completed a memorable win.
Earlier, Sri Lanka posted 178 for seven after being sent in. Pathum Nissanka led the innings with a composed 62 off 47 balls, his seventh T20 World Cup fifty, drawing level with Mahela Jayawardene for the most by a Sri Lankan. He shared partnerships of 54 with Kusal Perera and 46 with Kusal Mendis.
Late runs came from Pavan Rathnayake, who scored 44 off 25 balls. For Zimbabwe, Graeme Cremer took two for 27, while Blessing Muzarabani claimed two for 38.
Sri Lanka begin their Super Eights campaign against England in Kandy on Sunday, while Zimbabwe face the West Indies in Mumbai on Monday.