Tazmin Brits and Ayabonga Khaka inspired a shock six-run victory for South Africa against England in their Women's T20 World Cup semi-final at Newlands in Cape Town on Friday.
Brits hit 68 in a South African total of 164 for four, then held four catches, two of them exceptional, as England were restricted to 158 for eight.
South Africa will meet defending champions and heavy favourites Australia in the final at the same venue on Sunday.
Medium-pace bowler 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.
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.
South Africa 164-4 in 20 overs (T. Brits 68, L. Wolvaardt 53; S. Ecclestone 3-22) v England 158-8 in 20 overs (N. Sciver-Brunt 40, D. Wyatt 34, H. Knight 31; A. Khaka 4-29, S. Ismail 3-27).
Result: South Africa won by 6 runs
Toss: South Africa