Dean Elgar (35 not out) and Alviro Petersen (17) put on 47 for the first wicket before Petersen played a rash stroke against Shannon Gabriel and was caught by Leon Johnson, running back from cover.
Gabriel was one of three changes in the West Indian bowling line-up.
Gabriel, debutant Kenroy Peters and all-rounder Jason Holder all bowled accurately in overcast conditions.
Gabriel and Holder were particularly effective in tandem, conceding only ten runs in nine overs after Petersen's dismissal.
More From This Section
While Gabriel, Peters and Holder replaced Kemar Roach, Jerome Blackwood and Sheldon Cottrell, South Africa made two changes from the side that won the first Test at Centurion by an innings and 220 runs.
Batsman Temba Bavuma became the sixth black African -- and the first since Lonwabo Tsotsobe four seasons ago -- to play Test cricket for South Africa.
He replaced the injured Quinton de Kock and is the 85th player to be capped since South Africa returned to Test cricket in 1992.
In a second change for the hosts, Pakistan-born leg-spinner Imran Tahir replaced seamer Kyle Abbott, with spin expected to be a factor.
De Villiers moved one ahead of Australia's Adam Gilchrist, the previous record-holder for most consecutive Tests from debut.