After the ODI series, India will play the first Test of the two-match series, also at Johannesburg from December 18-22, while the second game will be played from December 26-30 in Durban, a statement from the Board of Control for Cricket in India read.
The tour will also have a two-day practice match between the touring side and a South Africa Invitation XI, beginning December 14 at Benoni.
The Indian team will arrive in South Africa on December 2.
The BCCI, on October 22, gave its consent to the tour after Cricket South Africa withdrew its CEO, Haroon Lorgat, from not just its dealings with it but also the ICC Chief Executives Committee pending an inquiry into his actions.
The tour was in limbo after CSA unilaterally released its itinerary in July, a move that miffed the BCCI.
The BCCI was also unhappy with Logart's appointment as CSA CEO, the uneasiness stemming from a somewhat frosty relationship it shared with him during his stint as the ICC CEO due to differences over a number of issues.
Matters came to a head recently when CSA's former legal adviser David Becker, allegedly at the behest of Lorgat, accused BCCI president N Srinivasan of being manipulative.
But the two sides finally put their differences aside and formalised the tour after a series of meetings earlier this month.
Itinerary:
December 2: Arrive in South Africa
December 5: 1st ODI, Wanderers Stadium, Johannesburg
December 8: 2nd ODI, Kingsmead, Durban
December 11: 3rd ODI, SuperSport Park, Centurion
December 14-15: Two-day tour match vs SA Invitation XI, Willowmoore Park, Benoni
December 18-22: 1st Test, Wanderers Stadium, Johannesburg
December 26-30: 2nd Test, Kingsmead, Durban.
Image: Mahendra Singh Dhoni
Photograph: BCCI
Bowlers give selectors headache ahead of WI series
South African Hindus outraged by Ganesha cartoon on BCCI-CSA tussle
Lorgat not suspended, says Cricket South Africa chief Nenzani
CSA, BCCI deal sad day for cricket, says SA Cricketers' Association
West Indies team arrives in Kolkata