Hall finished with 5-18 off 10 tight overs while fellow-paceman Andre Nel took 3-35 to ensure South Africa did not chase a stiff target on a lively Kensington Oval pitch in a game they needed to win to make it to the last four.
It all began with Nel, who grabbed two big wickets in his fiery opening three overs. The tall paceman dismissed struggling skipper Michael Vaughan and in-form Kevin Pietersen (three) to put England on the back foot.
Hall then put paid to England's hopes of recovering from these setbacks as he struck in quick succession during his disciplined spell, which saw England lose their last seven wickets for a paltry 43 runs.
Both the teams need a victory in this game to enchance their chances of making it to the last-four, with South Africa having six points from six matches and England four from five.
Defending champions Australia, New Zealand and Sri Lanka have already advanced to the semi-finals.
England failed to raise their batting performance when it mattered most, with Andrew Strauss (46), Paul Collingwood (30) and Ravi Bopara (27 not out) offering some resistance against an inpsired South African pace attack.
Pietersen was involved in a brief fascinating duel with South Africa, the country of his birth. He was tested by Nel with a bouncer and was struck on the body off the next delivery.
Pietersen, the only England batsman consistently among runs in the previous matches, looked subdued during his brief stay at the crease before falling to a diving catch at mid-off of Nel.
South Africa skipper Graeme Smith, who has been involved in a war of words with Pietersen, dived forward to bring off a low catch to spark wild on-field celebrations.
England could never gain the momentum after winning the toss on a track having both pace and bounce. Strauss and Collingwood got starts, but failed to convert them into big innings.
Bopara batted well, but lacked support from the other end.
England failed to get off to a solid start as opener Ian Bell was caught pulling by Ashwell Prince off the bowling of swing bowler Charl Langeveldt after contributing only seven.
Vaughan's nightmarish run with the bat continued when he was trapped leg-before by Nel after making 17. The England skipper has so far scored 130 in eight matches at the World Cup, without a half-century.
Struass played an attractive cameo, pulling Langeveldt for a six and then cutting Nel for a four. But his flourish did not last long as he was caught by Smith off Jacques Kallis.
England's hopes of bouncing back into the game were dashed when Hall removed out-of-form Andrew Flintoff, Collingwood, Paul Nixon and Sajid Mahmood.
Flintoff was bowled middle-stump by a gem of a delivery which came in sharply off the wicket. Like his captain, the all-rounder is also struggling for runs having now made 77 in seven matches.
England 154 all out in 48 overs (Strauss 46, Collingwood 30, Bopara 27 n o; Hall 5 for 18, Nel 3 for 35, Kallis 1 for 22) Vs South Africa (yet to bat).