West Indies are into the one-day international tri-series final after thrashing South Africa by 100 runs.
In a virtual semi-final, the hosts were set up by Darren Bravo's century after being put in to bat at Kensington Oval in Barbados on Friday.
Kieron Pollard (62) and Bravo propelled the Windies to 285 as they were bowled out with a ball to spare.
Shannon Gabriel (3-17) ripped through South Africa's top-order and they never looked likely in the chase as they were bowled out for 185.
Farhaan Behardien (35) and Morne Morkel (32 not out) provided some resistance, but it mattered little as the hosts set up a meeting with Australia in Sunday's final.
The Windies looked in real trouble early, slumping to 21-4 after just five overs.
Kagiso Rabada (3-31) did most of the early damage, including hitting Denesh Ramdin (4) on the helmet before removing the wicketkeeper with the next ball.
Bravo and Pollard were in charge of the recovery mission and the former was dropped before a brief rain delay.
The duo put on 156 for the fifth wicket before Pollard fell, but Bravo (102) continued on his way and brought up his third ODI century with a six.
Jason Holder (40) and Carlos Brathwaite (33 not out) added some important late runs.
Like the Windies, South Africa found themselves in early trouble, but a recovery proved too big an ask.
Hashim Amla was dropped early in his innings, yet he made just 16 before being trapped lbw by Sunil Narine (3-28).
Gabriel took the big wickets of AB De Villiers (2) and Faf Du Plessis (3), reducing the tourists to 51-5.
There was no way back from there despite the best efforts of Behardien and Morkel.