Kusal Perera hit a robust half-century to lift Sri Lanka to 165-7 in their group one Super-10 stage match against South Africa in Chittagong on Saturday.
Perera scored 61 off 40 balls and Angelo Mathews made 43 off 32 deliveries after Sri Lanka won the toss and opted to bat on a flat Zahur Ahmed Chowdhury stadium.
Perera hit six boundaries and three towering sixes before South African leg-spinner Imran Tahir pulled back the scoring rate by taking 3-26 in his four overs.
Mathews gave the final touches to the innings by hitting three boundaries and a six to help Sri Lanka add 45 in the last five overs.
Paceman Dale Steyn, declared fit after recovering from a hamstring injury, finished with 2-37 while fellow pacer Morne Morkel grabbed 2-31.
Sri Lanka's most experienced trio of Tillakaratne Dilshan (nought), Mahela Jayawardene (nine) and Kumar Sangakkara (14) failed to supplement Perera.
South African captain Faf du Plessis was ruled out of the match as he was unable to recover fully from a hamstring injury and was replaced by AB de Villiers as captain.
Steyn was in the thick of things from the first over as he was hit for two fours and a six by Perera before the paceman bowled the other opener Dilshan on the last delivery.
Perera went onto make his fifth T20 half-century off 29 balls before he holed out in the deep off Tahir.
England, New Zealand and the Netherlands are the other teams in group one from where the top two teams will qualify for the semi-finals.