After opting to bowl, England got their first wicket when Stuart Broad removed Graeme Smith in the 2nd over.
Just when a good partnership was developing, Onions struck to dismiss Amla for 20, leaving South Africa at 51/2.
At lunch, South Africa were 70/2 with Prince unbeaten on 33 with Kallis giving him company on 7.
Prince and Kallis added 42 runs for the 3rd wicket before Swann struck to dismiss Prince for 45.
de Villiers joined Kallis and the duo put together a useful partnership, helping South Africa recover.
Kallis then went on to score his 52nd half-century in Test cricket.
Just before tea, Swann struck again to dismiss de Villiers for 42, leaving South Africa at 159/4.
JP Duminy then joined Kallis as the duo put together a fruitful stand, defying the English bowlers.
The English had no answers to Kallis who was playing a sturdy innings.
Kallis was at his fluent best as he brought up his 32nd Test hundred, putting South Africa on top. SA ended day 1 on 262/4.