Things got off to a bad start for the Lions as Kusal Perera, making his first appearance at the top of the order, fell for just three runs having been caught out by Quinton de Kock's one-handed catch.
South Africa continued their strong bowling display in the early stages by ending the innings of Tillakaratne Dilshan for a duck, although Sri Lanka did manage to recover somewhat.
Mahela Jayawardene was sent packing for just four runs when he sliced a shot into the hands of Faf du Plessis at short mid-wicket, but Lahiru Thirimanne (41) and Kumar Sangakkara (45) helped to add a little stability.
However, having lost Angelo Mathews (19), Thisara Perera (0), Nuwan Kulasekara (0) and Tharindu Kaushal (0) in quick succession thanks in large to the strong bowling of Duminy who claimed a hat-trick of wickets - the second by a South African in their ODI history - Sri Lanka left themselves in a bleak position.
Rain threatened to disrupt play before soon passing over, and moments later Lasith Malinga (3) was picked off by Tahir to round off a fine individual and team display.
Follow Sports Mole's live text coverage of the last-eight meeting right here.