South Africa beat England by six runs at Newlands on Friday to set up a Women’s T20 World Cup final against Australia.
Tazmin Brits hit 68 in a Proteas total of 164-4, then held four catches, two of them exceptional, as England were restricted to 158-8.
South Africa will meet defending champions and heavy favourites Australia in the final at the same venue on Sunday.
Medium-pace bowler Ayabonga Khaka took three wickets in the 18th over to put the target just beyond England’s reach.
Fast bowler Shabnim Ismail made the first two breakthroughs after England made a fast start, then bowled captain Heather Knight in the final over to snuff out England’s last hope.
Laura Wolvaardt and Brits launched South Africa’s best batting performance of the tournament.
They followed up their unbeaten century opening stand in the last group match against Bangladesh by putting on 96 for the first wicket in 13.4 overs.
Wolvaardt was the senior partner, striking five fours and a six in making 53 off 44 balls before she was caught at backward point off left-arm spinner Sophie Ecclestone.
Brits then took over, hitting powerfully to score 68 off 55 balls. She hit six fours as well as two sixes in the space of three deliveries from leg-spinner Sarah Glenn.
HIGHLIGHTS: Proteas vs England
England’s Danni Wyatt and Sophia Dunkley raced to a 53-run opening stand in five overs before Ismail had Dunkley caught by Brits at midwicket for 28.
Two balls later Brits dived to take a sensational catch in the same position to dismiss Alice Capsey for nought.
Brits held another diving catch to dismiss Wyatt (34) at backward square leg and then calmly held a high hit from Nat Sciver-Brunt (40) at long-on.
Australia defeated India by five runs in another semi-final thriller on Thursday.