Kallis made a stroke-filled 131 as South Africa reached 272 for three in reply to New Zealand's first innings of 188.
"The last few games and the last year or so it's the way I've been getting my hundreds that has been pleasing," said Kallis.
"I've been getting them at a good rate and playing a lot more positively than I have in the past. I've caught a bit of criticism for not stepping up a gear and hopefully I've silenced those critics for a little while."
Kallis and Hashim Amla, who had a partnership of 330 during South Africa's 358-run win in the first Test in Johannesburg, shared another big stand, putting on 220 for the third wicket. Amla was on 89 not out when bad light ended play seven overs after tea.
It was a dominant performance by Kallis after a shaky start on a pitch with some uneven bounce. After taking 94 balls to reach 50 he needed only another 49 to post his 29th Test hundred and his fifth against New Zealand.
Known for his concentration and sound technique, and sometimes criticised for not dominating at the crease, Kallis displayed some dazzling stroke play as he scored 95 runs off 90 balls between lunch and tea.
Kallis admitted that attacking fields had helped him score quickly. "They came out attacking and when they do that there's a lot of scoring potential."
Mark Gillespie, in his first Test, ended Kallis' innings when he made a ball swing back sharply to trap the South African leg before wicket five balls after tea. Kallis hit 17 fours and two sixes in a 177-ball innings.
"It was very special, more so because of the situation in the game. It was getting very long out there," said Gillespie.
Kallis, who made 186 in the second innings in Johannesburg, came into the matches against New Zealand after making three centuries in four innings against Pakistan when South Africa earned a rare series win in the Asian country.
When he was on six Kallis, playing in his eighth Test of the year, became the first batsman to make 1000 runs in 2007.
Kallis and Amla, who was content to play a supporting role, came together after opening bowler Chris Martin dismissed opening batsmen Graeme Smith and Herschelle Gibbs. Amla, who made 176 not out in Johannesburg, scored his 89 runs off 176 balls with 13 fours.
Kallis said that South Africa aimed build a big lead.
"With the uneven bounce, which seems to be the story of the day on South African pitches at the moment, if we can get a lead of 200 it will put a lot of pressure on New Zealand."
South Africa needed only four balls at the start of the day to wrap up New Zealand's first innings, with Makhaya Ntini having Martin caught at second slip by Kallis after captain Daniel Vettori had added a single run to New Zealand's 187 for eight overnight.
Opening batman Craig Cumming, who retired hurt on 48 after being struck by a Dale Steyn bouncer Friday, did not bat and was ruled out of the rest of the match after surgery Friday night to repair a fractured right cheekbone and jaw.
Martin's first ball of the innings lifted sharply and looped off the shoulder of Smith's bat over gully for two runs but the South African captain was out to the last ball of the over when he played an indecisive defensive shot and was bowled off an inside edge.
Gibbs started his innings with a runner after injuring a knee while fielding Friday. He batted aggressively to make 25 off 27 balls before he was bowled by a ball from Martin which cut back sharply, with Gibbs stuck on his crease and not using his feet.