South Africa took the top spot in Group C after skipper A B de Villiers led them to a 32-run victory over Sri Lanka in a rain-curtailed ICC World Twenty20 match in Hanbantota on Saturday.
De Villiers scored a 13-ball 30 as South Africa posted 78 for four after the match was reduced to a seven-over-a-side affair.
In reply, the Sri Lankans were restricted to 46 for five.
The loss meant Sri Lanka will enter the Super Eights stage as the second-best team from the group.
In what was the first international T20 match between the two sides, the hosts always had a tough task after the Proteas set a stiff target. It became even more difficult when the Lankans lost openers captain Mahela Jayawardene (4) and Tillakaratner Dilshan (0) cheaply.
The Sri Lankan batsmen simply failed to get going against some excellent bowling by Dale Steyn, Morne Morkel and Jacques Kallis. The trio tightened the noose further and the likes of Dilshan Munaweera, Kumar Sangakara (13) and Thisara Perera (1) could never get the momentum going.
Steyn finished with impressive figures of two for 10 from as many overs.
Rain delays start of SA-SL World T20 match
Kiwis look to seal Super Eight berth against Pakistan
Sri Lankans face South Africa in marquee clash
You have a right to know the truth about our decisions: PM
World T20: Wary India gear up for tough English test