South Africa confirmed on Tuesday that captain Faf du Plessis would miss the one-off day-night Test against Zimbabwe, starting at St George's Park later in the day.
AB de Villiers will take over the captaincy.
Du Plessis suffered a lower back injury in a one-day international against Bangladesh in October and opted to have surgery on a troublesome shoulder during his recovery period.
Team manager and doctor Mohammed Moosajee said Du Plessis had been on track to play against Zimbabwe but suffered a respiratory tract infection which set him back.
"We are hopeful he will recover in time to lead the team for the first Test match against India, starting in Cape Town on January 5," said Moosajee.
De Villiers is making a comeback to Test cricket. He was the captain in his most recent two Tests, against England in January 2016, but then suffered a long-term elbow injury before deciding to take a break from long-form cricket.