Kallis also scored his 49 at a run-a-ball before being cleaned up by Abdur Razzak, while de Villiers and Morkel produced some late fireworks, hitting seven sixes and five fours between them.
Afridi, who also took a stunning diving catch at mid-wicket to dismiss the dangerous AB de Villiers for 17, provided some fireworks for the 16, 000 crowd with two sixes and four fours in his 18-ball 32.