The home side, who resumed on 97-0, needed just 5.3 more overs to reach a victory target of 130. Zak Crawley was 69 not out and Ollie Pope unbeaten on 11.
England have now won six of their seven Tests under their new leadership pairing of captain Ben Stokes and coach Brendon McCullum, having managed just one victory in their previous 17 matches when former skipper Joe Root was in charge.
"I'm delighted," said Stokes. "It's been a great series for us as a team. It has been one of those series where we haven't had many individual standout performances, but different people have put their hand up for us throughout and that's what you want in team sport.
"You want to be able to turn to people at key times and break the game open with either bat or ball and that's what we've had throughout."
Defeat means South Africa have suffered their first Test series loss since Dean Elgar took over as captain last year.
England resumed just 33 runs shy of their target after the umpires had halted play on Sunday because of bad light to the disappointment of a capacity crowd.
Crawley runs
Alex Lees was 32 not out and Zak Crawley 57 not out -- his first fifty in 17 Test innings -- when play started Monday under sunny skies but in front of a handful of spectators, who had been let in for free.
Lees, having added just two to his overnight score, was dropped off the third ball of the day when he edged Kagiso Rabada, only for diving wicketkeeper Kyle Verreynne to floor the chance.
The batsman's luck ran out, however, when he was lbw on review to Rabada for 39, with South Africa at least spared the embarrassment of a 10-wicket defeat.
Crawley hit the winning runs when he punched left-arm quick Marco Jansen through the covers for four -- the 12th boundary of his innings.
It meant for the third time this series, a match was won inside three days' playing time.
Thursday's play was washed out completely before Friday's scheduled second day was abandoned as a mark of respect following the death of Britain's Queen Elizabeth II.
Fast bowlers on both sides dominated a series in which runs were hard to come by, with South Africa, who boast a world-class pace attack but a fragile top order, managing just one individual fifty -- opener Sarel Erwee's 73 in their innings-and-12-run win in the first Test at Lord's.
England bounced back to win the second Test at Old Trafford by an innings and 85 runs.
Seamer Ollie Robinson was named player-of-the-match at the Oval for his career-best 5-49 in South Africa's first innings.
England earlier this season hammered New Zealand 3-0 before beating India in a Test postponed from last year over coronavirus concerns.