South Africa will play three Test matches against Pakistan and two against Sri Lanka during their 2018/19 summer, Cricket South Africa announced on Monday.
South Africa will also host a total of 13 ODIs and nine T20Is against Pakistan, Sri Lanka and Zimbabwe.
Pakistan, who will tour South Africa for the first time since 2013/14, will play the prime holiday season Tests in December and January, with Centurion awarded the Test starting on December 26 and Cape Town the traditional New Year Test starting on January 3.
The third Test will be in Johannesburg from January 11. Pakistan will also play five ODIs and three T20Is on the tour.
Sri Lanka will play Tests in Durban and Port Elizabeth in February, to be followed by five ODIs and three T20Is.
Zimbabwe will play three ODIs and three T20I at some of South Africa's smaller cricket venues. Cricket South Africa acting chief executive Thabang Moroe said that the scheduled 13 ODIs during the season would enable the national team to fine tune their preparations for the 2019 Cricket World Cup in England.
Fixtures:
Zimbabwe in South Africa
ODI series
1st ODI: September 30 in Kimberley
2nd ODI: October 3 in Bloemfontein
3rd ODI: October 6 in Paarl
T20I series
1st T20I: October 9 in East London
2nd T20I: October 12 in Potchefstroom
3rd T20I: October 14 in Benoni
Pakistan in South Africa
Tour match: December 19-21 in Benoni
Test series
1st Test: December 26-30 in Centurion
2nd Test: January 3-7 in Cape Town
3rd Test: January 11-15 in Johannesburg
ODI series
1st ODI: January 19 in Port Elizabeth
2nd ODI: January 22 in Durban
3rd ODI: January 25 in Centurion
4th ODI: January 27 in Johannesburg
5th ODI: January 30 in Cape Town
T20I series
1st T20I: February 1 in Cape Town
2nd T20I: February 3 in Johannesburg
3rd T20I: February 6 in Centurion
Sri Lanka in South Africa
Test series
1st Test: February 13-17 in Durban
2nd Test: February 21-25 in Port Elizabeth
Tour match: February 28 in Benoni
ODI series
1st ODI: March 3 in Johannesburg
2nd ODI: March 6 in Centurion
3rd ODI: March 10 in Durban
4th ODI: March 13 in Port Elizabeth
5th ODI: March 16 in Cape Town
1st T20I: March 19 in Cape Town
2nd T20I: March 22 in Centurion
3rd T20I: March 24 in Johannesburg