South Africa thrashed World Twenty20 hosts Sri Lanka in Hambantota after a rain delay reduced their Group C showdown to a seven-overs-a-side match.

Captain AB de Villiers crunched 30 from 13 balls in South Africa's 78 for four and Sri Lanka never threatened to go close to that imposing total, limping instead to 46 for five.

Fortunately, given it would have been a cruel way to go out, the match only determined which of the two teams would finish top of the group, not which would go through to the Super Eight stage. Both were already assured of advancing after wins over Zimbabwe.

South Africa lost Richard Levi to the fourth ball of the innings, to a brilliant diving catch by Dilshan Munaweera off the bowling of Nuwan Kulasekara, before Hashim Amla clubbed three boundaries over the infield to make a swift 16 before he was stumped by Kumar Sangakkara off Rangana Herath.

Angelo Matthews briefly clamped the brakes on with a tidy fourth over, but Herath then began to take punishment as De Villiers seized the initiative. A swept four from the first ball of the fifth over by the skipper was followed by a vicious punch over the ropes for six.

De Villiers fell when Jeevas Mendis showed safe hands at mid-off to give Lasith Malinga a wicket.

On 65 for three going into the final over, South Africa lost Faf du Plessis but JP Duminy played a clever scoop shot to the boundary from the fifth ball before drilling a straight six to end the innings.

Tillakaratne Dilshan fell in the first over of Sri Lanka's reply, brilliantly run out by wicketkeeper De Villiers, and Mahela Jayawardene was dismissed for four at the end of the second over.

The home side rode their luck when Albie Morkel dropped a chance to hand Sangakkara a life. The same batsman was soon on his way, though, top-edging an attempted pull shot to De Villiers.

Thisara Perera and Dilshan Munaweera perished when hitting out in the closing two overs, Sri Lanka's hopes long over.