The Indian selectors announced a 17-member Test and 16-man One Day International squads. The Test squad also features uncapped Ambati Rayudu. Openers Virender Sehwag and Gautam Gambhir have been ignored.
The 35-year-old Zaheeer, who has played 88 Tests, has not been in the Indian team since December, 2012. He is five short of completing 300 Test wickets.
Bengal's Wriddhiman Saha has been chosen as reserve wicketkepeer in Tests.
Despite poor form in recent times, fast bowler Ishant Sharma has been included along with Umesh Yadav, Bhuvneshwar Kumar and Mohammed Shami.
R Ashwin, Pragyan Ojha and Ravindra Jadeja are the spinners in the squad.
India will play three One Day Internationals and two Tests next month in South Africa.
This will be the first Test series for India after the retirement of Sachin Tendulkar.
The ODI series begins in Johannesburg on December 5. The first Test is also in Johannesburg from December 18.
India ODI squad
MS Dhoni (captain and wicketkeeper), Shikhar Dhawan, Rohit Sharma, Virat Kohli, Yuvraj Singh, Suresh Raina, Ravindra Jadeja, Ajinkya Rahane, R Ashwin, Bhuvneshwar Kumar, Amit Mishra, Ambati Rayudu, Mohit Sharma, Ishant Sharma, Mohammed Shami, Umesh Yadav.
India Test squad
MS Dhoni (captain and wicketkeeper), Shikhar Dhawan, Virat Kohli, Rohit Sharma, Ravindra Jadeja, Ambati Rayudu, Murali Vijay, Cheteshwar Pujara, Ajinkya Rahane, R Ashwin, Bhuvneshwar Kumar, Umesh Yadav, Wriddhiman Saha (wicketkeeper), Zaheer Khan, Mohammed Shami, Pragyan Ojha and Ishant Sharma.