Jaffer made 116 as India reached 254 for three at the close Tuesday.
India benefited from a decision to move the out-of-form Virender Sehwag down the batting order. Dinesh Karthik, his replacement, made 63 and helped Jaffer put on 153 for the first wicket.
With the series locked at 1-1, South Africa's bowlers were made to work hard on an easy-paced pitch as India took a big step towards ensuring that they go home with at least a share of the honours.
The tall Jaffer, 28, made a horror start to the tour of South Africa, with a top score of 10 from his first five innings. But the tour selectors kept faith with him and he showed signs of form when he made 26 and 28 in the second Test in Durban.
He played a chanceless innings Tuesday, reaching his third century in his 17th Test off 197 balls. He eventually fell to the second new ball when Jacques Kallis held a flying chance at second slip off Dale Steyn.
It was Kallis' 100th Test catch for South Africa to go along with 8072 runs and 202 wickets in 104 matches. Jaffer batted for six hours, faced 244 balls and hit 15 fours.
Wicketkeeper Karthik came into the side when Mahendra Singh Dhoni was ruled out because of an injured right middle finger.
India's previous best stand in the series was 20, with both Jaffer and Sehwag struggling against South Africa's fast bowlers. The hard-hitting Sehwag was retained despite scoring only 45 runs in four innings but it was decided he would not open the batting.
Karthik gave a chance on 32 when South African captain Graeme Smith could not hold a low edge at slip off Shaun Pollock. He also mistimed a drive just short of Herschelle Gibbs at cover off left-arm spinner Paul Harris when he had 53.
But there was hardly any other encouragement for the bowlers after Indian captain Rahul Dravid won the toss and decided to bat.
Jaffer was the senior partner, striking some firm drives and neat clips off his toes, while Karthik was content to leave the ball alone as much as possible early in his innings before playing some more expansive strokes after lunch.
The stand was broken by left-arm spinner Paul Harris, playing in his first Test, when he had Karthik caught at silly point off the first ball after tea, although replays suggested the ball might not have hit Karthik's bat before looping off a pad to Hashim Amla.
With no assistance for the fast bowlers, Harris was into action before lunch and bowled 24 overs during the day, including a spell of 21 successive overs. He took one for 74.
Shaun Pollock claimed the wicket of Dravid when the Indian captain edged a catch to wicketkeeper Mark Boucher after scoring 29.
India 254 for 3 (Wasim Jaffer 116, Dinesh Karthik 63, Dravid 29, Tendulkar 28 n o; Pollock 1 for 32, Steyn 1 for 41, Harris 1 for 74) Vs South Africa