Cape Town: South Africa will play three Test matches against Pakistan and two against Sri Lanka during their 2018/19 summer at home, Cricket South Africa announced on Monday.
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 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 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.
Full itinerary:
South Africa vs Zimbabwe:
South Africa vs Pakistan
South Africa vs Sri Lanka