They have been brought as dual replacement for the injured Dale Steyn.
Oliver made his Test debut in 2016-17 and has played five Tests against Sri Lanka, England and Bangladesh.
Ngidi is yet to make his Test or ODI debut, but has played 3 T20Is.
South Africa won the opening Test against India by 72 runs.
Squad: Faf du Plessis (c), Deal Elgar, Aiden Markram, Hashim Amla, Temba Bavuma, Theunis de Bruyne, Quinton de Kock (wk), Keshav Maharaj, Morne Morkel, Chris Morris, Vernon Philander, Kagiso Rabada, Andile Phehlukwayo, Duanne Oliver, Lungi Ngidi.