Broad took six for 17 as South Africa were bowled out for just 83 in their second innings.
Needing 74 to win, England won by seven wickets to take a winning 2-0 lead into the final Test in Centurion next week.
Broad ripped the heart out of the South African batting, taking the first five wickets for one run in the space of 31 balls after lunch.
“When he gets on a roll like that you just let him go,” said England captain Alastair Cook.
“You could see by the look in his eyes this morning that he had the bit between his teeth.”
The defeat will topple South Africa from top spot on the International Cricket Council’s Test rankings when the points are adjusted after the series.
England led on the first innings by 10 runs after being bowled out for 323 and the match was evenly poised as South African opening batsmen Dean Elgar and Stiaan van Zyl put on 23 runs at the start of the second innings, with Broad having conceded 13 of the runs.
According to Cook, coach Trevor Bayliss had “a few harsh words” at lunch before a session in which eight wickets fell for 55 runs, telling the players they had an opportunity to win the series.
Broad struck in the third over after the interval, having Elgar caught behind off a ball that lifted and moved away from the left-hander.
Van Zyl was dropped, a difficult chance to James Anderson at third slip, and the single that was taken as the ball looped away was to prove the only run that Broad conceded while wrecking the top order.
Van Zyl was caught at gully. South African captain AB de Villiers came out to a roar of appreciation from a near-capacity crowd but was caught behind for nought off a delivery which cut back sharply to take an inside edge.
Hashim Amla was superbly caught at short leg by James Taylor off a full-blooded leg glance and Temba Bavuma was bowled when he ducked to avoid a short ball which hit his glove and went on to the stumps.
Broad was rested with figures of five for 14 from 10 overs, eight of which were bowled after lunch.
“I got a bit lucky with the conditions,” said Broad. “The clouds came in and the lights came on. It was a fantastic deck to bowl on, the sort of wicket you’d like to take around with you. There was movement through the air and off the pitch.”
Broad said he had been frustrated by his bowling in the first innings.
“I was a little bit ill and I didn’t bowl well. I had a chat with Alastair this morning about bowling a bit fuller and bringing the batsmen forward. We were great as a side after lunch and took some great catches.”
De Villiers acknowledged: “It was some of the best bowling I have faced, from the whole unit. The conditions suited them but they made the best of them. They asked a lot of questions.”
De Villiers said England had not “asked as many questions” in the first innings.
“That’s where we missed a trick. We had a great opportunity to get 400-plus and we didn’t take it.”
“It’s tough to lose the series but there is still a lot to play for. I almost feel all hope is gone but I’m the kind of guy who will get myself and the team going for the last Test.”
The fourth and final Test starts at Centurion on Friday.