Kedar Jhadav, who had suffered a hamstring injury earlier this month, has also been picked.
Virat Kohli will be back to lead India in the one-day worldwide series against South Africa, while Shardul Thakur and Mohammed Shami have also been included in the squad. Tamil Nadu off-spinner Washington Sundar, who had replaced him, is out.
Kohli will return to lead the side after his break from cricket, with the Test series being his first assignment after marriage.
India will play a series of three Tests, six ODIs and three T20Is against South Africa starting with the longest format from January 5.More news: Four dead after bus ploughs into pedestrian underpass in Moscow
Kohli was rested for the three-match Twenty20 series against Sri Lanka, which India lead 2-0 with Rohit Sharma in charge.
Ravichandran Ashwin and Ravindra Jadeja too were ignored, as Kuldeep and Chahal were rewarded for their impressive ODI form.
"With every game they have been improving a lot". We wanted to increase spin bench strength and today we have 5-6 quality spin bowlers.
India ODI squad: Virat Kohli (c), Rohit Sharma (vc), Shikhar Dhawan, Ajinkya Rahane, Shreyas Iyer, Manish Pandey, Kedar Jadhav, Dinesh Karthik, MS Dhoni (wk), Axar Patel, Yuzvendra Chahal, Kuldeep Yadav, Jasprit Bumrah, Bhuvneshwar Kumar, Hardik Pandya, Mohammed Shami, Shardul Thakur. Hardik Pandya and Axar Patel were the all-rounders named in the team.Surprisingly, Shardul Thakur earned a call-up despite not being included for the Sri Lanka series.