With both teams out of contention for a place in the semi-finals, the Group One match was of no real consequence and South Africa’s second win in four matches helped them finish third in the group.
Sri Lanka, who lost for the third time in four games, finished level on points with Afghanistan. The top two, West Indies and England, qualified for the last four.
Chasing a target of 121, South Africa lost opener Quinton de Kock in the second over but Amla and skipper Faf du Plessis (31) shared a stand of 60 to take the game away from their opponents.
Du Plessis was unlucky to be given out leg before wicket to Suranga Lakmal after an inside edge crashed into his pad.
AB de Villiers (20 not out) smashed Lakmal for a six to seal South Africa’s win with 14 balls to spare.
Sri Lanka skipper Angelo Mathews sat out the match with a hamstring injury suffered in the previous game against England.
Asked to bat first, Sri Lanka could not make the most of the breezy start they received from stop-gap captain Dinesh Chandimal (21) and Tillakaratne Dilshan (36) who put on 45 for the first wicket.
Aaron Phangiso claimed two wickets in two balls to trigger a collapse and Sri Lanka were eventually bowled out for 120 in 19.3 overs.