Boje was dropped after the second Test against the same opponents in Melbourne in December but played his way back into contention with good form in domestic matches, while Johan Botha, who replaced him in Australia, was banned from bowling because of an illegal action.
Hall has not played in the Test side since appearing in one match in the West Indies last season but his determined performances against Australia in One-day matches won him a place in the squad, while Dippenaar also came into the Test reckoning for the first time this season after solid One-day performances.
Makhaya Ntini, who missed the final Test against Australia in Sydney in January, was back in the side after recovering from a knee injury, while Charl Langeveldt, who played in Sydney, was not considered because of a broken finger.
Opening bowler Shaun Pollock and fast bowler Andre Nel were both selected in the squad despite missing the final One-day international in Johannesburg Sunday.
Pollock is being treated for a lower back ligament sprain while Nel is still suffering from a foot injury, which caused him to return early from the tour of Australia. Garnett Kruger, who toured Australia but did not play in the Tests, was selected as cover.
South Africa Test squad: Graeme Smith (captain), Mark Boucher, Nicky Boje, AB de Villiers, Boeta Dippenaar, Herschelle Gibbs, Andrew Hall, Jacques Kallis, Garnett Kruger, Andre Nel, Makhaya Ntini, Shaun Pollock, Ashwell Prince, Jacques Rudolph.