West Indies 285 (Bravo 102, Rabada 3-31) beat South Africa 185 (Behardien 35, Gabriel 3-17, Narine 3-28) by 100 runs
Scorecard and ball-by-ball details
West Indies pulled off a coup to beat South Africa for the second time in the triangular series and book a place in Sunday's final against Australia. The hosts, ranked eighth in this format, were only given an outside chance of making it to the last match, ahead of the tournament, but they ended with as many wins as top-ranked side Australia.
At 21 for 4 in the fifth over, West Indies looked out of the reckoning but Darren Bravo's third ODI century led the recovery after Kagiso Rabada's searing opening spell. Bravo and Kieron Pollard, who scored a ninth ODI fifty, shared a record 156-run stand for the fifth wicket to drive West Indies to 285.
Fast bowler Shannon Gabriel, playing only his second ODI, then made sure South Africa could not get there. He reduced them to 28 for 3 and South Africa failed to find a batting hero. Farhaan Behardien was the only batsman in the top seven to get past 16 and only South Africa's last pair put on a stand over 31 as they were dismissed for 185 in 46 overs.
Earlier, it seemed West Indies would be in danger of folding in a similar fashion. They were flattened by Rabada's raw pace and blistering accuracy on a surface with good carry. After Wayne Parnell had Andre Fletcher caught behind, Rabada dismissed Johnson Charles and Marlon Samuels off successive balls. He was unable to emulate his bowling coach Charl Langeveldt and claim a hat-trick, but an over later he set Denesh Ramdin up by hitting him on the shoulder with a bouncer and then going full to remove his middle stump and leave West Indies reeling.
Things could have got worse for them when Bravo, who was on 11 at the time, top-edged Morne Morkel but Parnell misjudged the catch and parried it over for six. Three balls later, the light drizzle that had hung around turned into a downpour and the 20-minute break allowed West Indies to catch their breath and plot a comeback.
They returned to face spin for the first time in Imran Tahir but Bravo dealt with him with authority, so much so that Tahir went wicketless for the first time in the series. Pollard led the assault against the seamers and took on Morkel and Chris Morris, both of whom struggled to find their lengths.
Bravo and Pollard scored at more than six runs an the over to force AB de Villiers into making constant bowling changes, all to no avail. Not only was the South African attack unable to find a way through the pair, but they were untidy in their efforts and bowled 19 extra deliveries.
They had a brief respite when Pollard tried to clear long-on and Faf du Plessis took a sharp catch running back from the inner ring but with 20 overs left in the West Indian innings, Bravo read the situation well and pressed on. He was in the 80s when Pollard was dismissed, and entered the nineties with a four off the bottom edge off Morris and brought up his most important hundred in this format off the same number of balls.
Holder took 17 balls to get his first run but he could afford to be circumspect. After settling in, he scored a vital 40 and shared a 54-run stand for the seventh wicket with Carlos Brathwaite.
Having watched Australia chase down 283 on Tuesday, South Africa would have been confident of their chances but their line-up let them down, despite several let-offs.
Hashim Amla should have been out off the fifth legitimate ball he faced, when he chased an awayswinger from Gabriel but Ramdin shelled the chance. He made up for it two overs later when Quinton de Kock got a bottom edge and Ramdin took a one-handed catch.
Du Plessis should have been run out when Amla set off for a risky single, but Andre Fletcher missed a direct hit from point. Five balls later, Gabriel sliced du Plessis into half with a sharp inducker and appealed for the lbw. Amla coaxed du Plessis into a review, but it went in vain.
De Villiers offered a chance, when he chased a wide one from Gabriel, delivered at 144.4kph and Ramdin did not miss out. He fell on his injured right shoulder to take the catch but it ensured the South African captain ended the series without a single fifty. Amla's luck ran out when Sunil Narine trapped the opener in front with his second ball to expose South Africa's middle order.
Jason Holder, having recovered from a hamstring strain to play this game, bowled an uninterrupted ten-over spell and found reward when he had Duminy popping a leading edge to gully. Holder should have had another wicket when Behardien top-edged to fine leg but Gabriel dropped it. By then, South Africa were 65 for 6 and West Indies were not left to rue their missed chances.
Gabriel did not bowl again in the match and went off the field to tend to an injury, which allowed Behardien and Wayne Parnell to mount a brief fightback. With the required run rate climbing, the only purpose South Africa's tail served in keeping West Indies in the field was to frustrate them and Sulieman Benn was particularly irked. He searched for a wicket without success, but that would not take the gloss off West Indies' win.