Johannesburg: South Africa will play three Test matches against Pakistan and two against Sri Lanka during their 2018/19 summer, Cricket South Africa.
South Africa will also host a total of 13 one-day internationals and nine Twenty20 internationals 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 26 December and Cape Town the traditional New Year Test starting on 3 January.
The third Test will be in Johannesburg from 11 January.
Pakistan will also play five one-day internationals and three Twenty20 internationals.
Sri Lanka will play Tests in Durban and Port Elizabeth in February, to be followed by five one-day internationals and three Twenty20 internationals. Zimbabwe will play three one-day internationals and three Twenty20 internationals at some of South Africa's smaller cricket venues.
Cricket South Africa acting chief executive Thabang Moroe said that the scheduled 13 one-day internationals during the season would enable the national team to fine tune their preparations for the 2019 Cricket World Cup in England.
Zimbabwe in South Africa
30 September: First one-day international, Kimberley
3 October: Second one-day international, Bloemfontein
6 October: Third one-day international, Paarl
9 October: First Twenty20 international, East London
12 October: Second Twenty20 international, Potchefstroom
14 October: Third Twenty20 international, Benoni
Pakistan in South Africa
19-21 December: SA Invitation XI, Benoni
26-30 December: First Test, Centurion
3-7 January: Second Test, Cape Town
11-15 January: Third Test, Johannesburg
19 January: First one-day international, Port Elizabeth
22 January: Second one-day international, Durban
25 January: Third one-day international, Centurion
27 January: Fourth one-day international, Johannesburg
30 January: Fifth one-day international, Cape Town
1 February: First Twenty20 International, Cape Town
3 February: Second Twenty20 International, Johannesburg
6 February: Third Twenty20 International, Centurion
Sri Lanka in South Africa
13-17 February: First Test, Durban
21-25 February 21-25: Second Test, Port Elizabeth
28 February 28: SA Invitation XI, Benoni
3 March 3: First one-day international, Johannesburg
6 March: Second one-day international, Centurion
10 March: Third one-day international, Durban
13 March: Fourth one-day international, Port Elizabeth
16 March: Fifth one-day international, Cape Town
19 March: First Twenty20 international, Cape Town
22 March: Second Twenty20 international, Centurion
March 24: Third Twenty20 international, Johannesburg.