A stunning effort with the bat from Jacob Bethell was the difference as England secured a Super League semi-final spot, while Zimbabwe and the West Indies shone in the fight for the tournament's minor placings.
Bethell was a thorn in South Africa's side, playing a part with the ball before making a classy 88 to help his England side set up a semi-final clash against the winner of the Sri Lanka/Afghanistan quarter-final.
Elsewhere, Matthew Welch helped Zimbabwe to victory over Scotland, while the West Indies were too strong for Papua New Guinea in a 169-run victory.
England defeated South Africa by six wickets
Despite winning the toss and electing to bat, South Africa found scoring tough early, losing Valentine Kitime in the fourth over by the continually-impressive Josh Boyden.
Boyden also removed Ethan-John Cunningham in the early stages, before Dewald Brevis and Gerhards Maree steadied the South African ship with a stand of 55.
Brevis continued after Maree fell to Bethell, making his fourth score over fifty for the tournament, only to fall on 97.
Rehan Ahmed's 4/48 stifled South Africa, who look dead in the water at 169/9. Matthew Boast and Asakhe Tsaka frustrated England with a final-wicket stand of 40, ticking over to a more-respectable 209.
Bethell attacked, hitting the fourth-fastest fifty in the tournament's history in 20 balls, with the run rate exceeding ten an over. He would eventually be dismissed on 88 from 42 balls, though the damage was done for George Van Heerden's side, who will now fight for the minor places.
William Luxton finished the job with 47 from 41 balls at No.5, ending the match with a six.
Zimbabwe defeated Scotland by 108 runs
Welch led at the top of the order for the men in red, setting a strong platform with 78 despite the early loss of partner Emmanuel Bawa (3).
Brian Bennett joined in on the act with 54 (58) of his own, helping his side to 248.
Jack Jarvis played a strong hand with the ball, taking two wickets in two balls, also claiming Connor Mitchell in a desperate bid to keep his side in the game.
Chasing 249 for victory, Scotland would need their best batting performance of the tournament to claim victory, though started poorly when Charlie Tear was dismissed early by Mcgini Dube.
Mitchell then picked up the next three wickets with his left-arm spin, as Scotland slumped to 105 for six with 26 overs remaining. Scotland would slump to 140 all out.
West Indies defeat Papua New Guinea by 169 runs
After the disappointment of not reaching the Super League stage, the West Indies were clinical in a big victory over Papua New Guinea.
Shaqkere Parris and Matthew Nandu put on 155 for the first wicket, with Parris caught behind off the bowling off Rasan Kevau.
Nandu was joined by Teddy Bishop before the latter was dismissed, beaten by Patrick Nou on 15.
Captain Nandu would eventually bring up his century in the 42nd over, sweeping for four. Alongside Kevin Wickham, Nandu kept things ticking, reaching 128 before eventually being dismissed by Boio Ray. He would would end up with 3/48, though the West Indies had all but tied up the match after posting 317.
Ray was unable to carry his form over into the batting innings for Papua New Guinea, dismissed facing his first ball (bowled by Nathan Edward). Peter Karoho's countering 21 was quelled by Shiva Sankar, and the dismissal of Barnabus Maha for 5, bowled by Isai Thorne, sparked the collapse.
Nandu would go on to take two wickets with the ball, and Aue Oru's 27* went in vain as his team were bowled out for 148.
BE A PART OF CRICKET'S NFT REVOLUTION
Crictos official marketplace is now open!
Personalise your homepage with an ICC account
News, fixtures and updates tailored to your favourite team. Never miss a moment!