The 36-year-old allrounder grabbed 4-15 and was well supported by Morne Morkel’s 2-16 as Zimbabwe failed to cope with the pace quartet of South Africa after they were put in to bat in the Group C match.
Craig Ervine top-scored with 37, and added 35 for the fourth wicket with Stuart Matsikenyeri (11), to help Zimbabwe just avoid their lowest total of 84 in all Twenty20 internationals, made against New Zealand in 2010.
Morne Morkel dismissed Vusi Sibanda (nought) and Brendan Taylor (four) in his first two overs before Kallis polished off the middle-order with the wickets of Matsikenyeri and Elton Chigumbura off successive deliveries in his first over.
He then dismissed Graeme Cremer (six) and Ervine to improve on Morne Morkel’s 4-17 against New Zealand in 2007 which was the previous best bowling by a South African in a Twenty20 match.
Hosts Sri Lanka, the third team in the group, beat Zimbabwe by 82 runs in the first match on Tuesday.
Zimbabwe 93-8 in 20 overs (C. Ervine 37, J. Kallis 4-15, M. Morkel 2-16)