It was his 42nd test hundred and he has now moved ahead of Australia's Ricky Ponting and into second place on the list of leading century-makers. He trails only India's Sachin Tendulkar who has 51 test 100s.
Kallis played some superb on-drives and slapped a struggling Tim Southee through square and mid-wicket for consecutive boundaries and was undefeated on 107.
New Zealand made a bright start to the morning with Trent Boult slapping 22 runs off the second over of the day. Vernon Philander watched bemused as three sixes disappeared in the general vicinity of wide midwicket.
And Chris Martin got a huge cheer when he pushed the ball into the covers and set off for a quick single only to get a bonus four runs when Alviro Petersen's throw missed the stumps and carried all the way to the rope.
Martin was caught at short leg shortly after but New Zealand's lead had grown from five runs to 35.
The home side then picked up two quick wickets. Petersen survived a couple or promising shouts including a decision which was referred to the third umpire. Regardless, he insisted with an aggressive approach and came unstuck with a lofted drive to mid-off.
Bracewell was celebrating again moments later when Hashim Amla got an edge and Martin Guptill napped a fantastic diving catch, scooping the ball up off the grass tops.
- ODT