Kallis oozed sheer class as he went into the break on 99 not out, becoming just the sixth batsman to score 11 000 Test runs, and AB de Villiers is on 49 not out, with a feast of runs surely awaiting the visitors in the afternoon.
But Kallis and De Villiers had to get through some threatening West Indian bowling with the second new ball, especially by the dangerous Kemar Roach.
Roach gave Kallis a working over with the hard new ball, hitting him on the helmet as he had done on the first day too. But Kallis weathered the storm and then brought out the hook shot, drawing Roach's venom and re-establishing firm control by the break.
While Kallis was splurging himself, stroking 10 fours and a six off 203 balls, De Villiers was content just to have small sips of glory, before seizing the initiative towards the end of the session by coming down the pitch to off-spinner Shane Shillingford and hitting him for a six and a four.
The marvellous ability of Kallis is that he never bends to whatever pressure the bowling side are heaping on him and he was happy to bide his time before striking out when the opportunity presented itself.
De Villiers was content to be his able lieutenant, although he displayed nimble footwork in a composed innings during which he has gone past 4000 Test runs, the seventh South African to do so.
Teams
West Indies - Chris Gayle (capt), Travis Dowlin, Brendan Nash, Shivnarine Chanderpaul, Narsingh Deonarine, Dwayne Bravo, Denesh Ramdin (wk), Shane Shillingford, Sulieman Benn, Kemar Roach, Ravi Rampaul.
South Africa - Graeme Smith (capt), Alviro Petersen, Hashim Amla, Jacques Kallis, AB de Villiers, Ashwell Prince, Mark Boucher (wk), Dale Steyn, Paul Harris, Morne Morkel, Lonwabo Tsotsobe.