The pair of Nottinghamshire bowlers shared nine wickets as South Africa, who began the day on 76 for six, were dismissed after 18 overs and condemned to their first innings defeat by England in 45 years.
Trailing by 156 runs at the start of play, Mark Boucher and Morne Morkel were set the unenviable task of resurrecting South Africa's total and forcing England to bat again.
Morkel rode his luck when dropped by Andrew Strauss at slip off Swann on the 10th ball of the day, but hung back on the crease on the next delivery to be trapped lbw for 15.
Boucher was dismissed seven overs later for 29, judged caught behind gloving a lifter from Broad after England referred an initial not-out decision for review. With South Africa teetering at 108 for eight, Paul Harris swung lustily for 36 but scooped a catch to mid-on from Jimmy Anderson who replaced Broad at the Umgeni End.
Swann, who celebrated his fifth wicket for the inning after trapping Dale Steyn in front for three, was named man of the match.
The off-spinner finished with nine for 164 for the Test, with his turn and variation in pace regularly bamboozling the batsmen.
Broad finished with four for 43 in 17 overs, his burst of three for 18 on the fourth afternoon having put England well in control.
Despite coming into the match as favourites after being a wicket shy of victory in the first Test at Centurion, South Africa head to Cape Town for the third Test on January 3 one down in the four-Test series.
Scorecard
South Africa (1st innings): 343 (G Smith 75, J Kallis 75, A de Villiers 50; G Swann 4-110)
England (1st innings): 574 for nine declared (A Strauss 54, A Cook 118, P Collingwood 91, I Bell 140, M Prior 60; M Morkel 3-78, J-P Duminy 3-89)
South Africa (2nd innings):
A Prince c Bell b Swann 16
G Smith lbw Swann 22
H Amla b Swann 6
J Kallis b Broad 3
A de Villiers lbw Broad 2
J-P Duminy b Broad 0
M Boucher c Prior b Broad 29
M Morkel lbw Swann 15
P Harris c Broad b Anderson 36
D Steyn lbw Swann 3
M Ntini not out 1
Extras: 0
Total: (all out, 50 overs) 133
Fall of wickets: 1-27, 2-37, 3-40, 4-44, 5-44, 6-50, 7-86, 8-108, 9-129, 10-133.
Bowling: Anderson 8-2-24-1, Onions 4-1-12-0, Swann 21-3-54-5, Broad 17-3-43-4.
Image: England's Swann, Strauss and Prior appeal for the wicket of South Africa's Dale Steyn.
Photograph: Reuters
Swann keeps England afloat in first Test
Best Actors of 2009
HP for compulsory voting, like Gujarat
England need Pietersen to win Ashes: Warne
Strauss and Swann lift England