Captain Andrew Strauss won the toss but controversially asked the hosts into bat first on a flat Centurion track – a decision which backfired as the Proteas batsmen seized control.
Seamer Stuart Broad got England off to the best possible start, trapping Proteas skipper Graeme Smith in just the second over the day.
But Jacques Kallis led the fightback with a fine unbeaten century to help his side to a commanding 262-4 at stumps.
Swann took the crucial wickets of Ashwell Prince and AB de Villiers to give England hope, and later defended Strauss’ decision to take to the field first, insisting the hosts still have it all to do. “I think we were justified bowling first. It looked green and seemed a bit damp yesterday so we were all behind the decision,” Swann said. “No-one said Test cricket was easy. We’ve stuck in, taken four wickets and they’ve not got away from us. South Africa is renowned for good batting pitches so there’s a lot of hard work to come.”
Strauss’ decision to field first was all the more surprising given that he dismissed the option to play a five-man bowling attack, instead selecting Ian Bell as a sixth specialist batsman.
The stance, however, seemed justified when Smith nicked a Broad delivery behind to wicketkeeper Matt Prior without troubling the scorers.
With Broad and James Anderson unable to unhinge Prince and Hashim Amla, Strauss introduced Graham Onions, who almost got immediate success with an lbw appeal on Amla which went to referral, only for the fourth umpire to rule against him.
But Amla wasn’t to last long, however, edging an Onions delivery to Paul Collingwood at second slip.
This brought Kallis to the crease for the first time since suffering a rib injury, but the 34-year-old showed no sign of discomfort as he took the England bowlers to task.
Despite Prince finding the safe hands of Collingwood off the bowling Swann for 45, Kallis continued to lead the charge, putting on stylish 66 for the fourth wicket with de Villiers before the latter became Swann’s second victim, finding Alastair Cook at short-leg when well set on 32.
But Kallis wasn’t to be denied, smashing 14 fours and a six in a calculated innings to reach his 32nd Test century and putting on a menacing unbroken stand of 103 with JP Duminy (39no), leaving England with plenty to think about this morning.