Aiden Markram scored his second century of the series as he laid the flawless foundation for the South Africa to start their quest to win their first home Test series victory against Australia since unity at the Wanderers Stadium on Friday.
South Africa vs Australia is live on Sky Sports in the UK.
Morkel broke down with a side strain as South Africa toiled in search of a breakthrough, leaving the field two balls into his fourth over of the day.
With the match being overshadowed by the fallout of the ball-tampering scandal in the Cape Town Test the Proteas got off to a bright start against their weakened opponents.
Peter Handscomb, Matthew Renshaw and Joe Burns came into the side, replacing the banned trio of former skipper Steve Smith, David Warner and Cameron Bancroft.
Before the Proteas gloveman departed, he played a supporting role in an injury scare to his counterpart and Australia captain Tim Paine.
Aiden Markram was the aggressor scoring the majority of the runs in the opening stages - scoring thirty of the fifty runs in the opening fifty-run partnership with Dean Elgar.
His second ton after he made 141 in the first test in Durban took South Africa's tally of hundreds in the series to four while no Australian batsmen has reached three figures. A brilliant 95 not out from Temba Bavuma and runs from Quinton de Kock (39) and Keshav Maharaj (45) saw South Africa reach 488 all out to put them in the box seat in this fourth and final Test.
Australia will start their innings after the tea break, but their hopes of a victory that would level the series at 2-2 look very slim, especially with rain predicted later in the test, as their controversial tour looks to be coming to a meek end. Burns, returning in extreme circumstances after being dropped after another Australian batting debacle against South Africa in Hobart 16 months ago, stretched for a Rabada outswinger and fell victim to a smart catch from Faf du Plessis moving across from second slip.
The spinner had taken the first two catches himself, but this time the ball was snatched at mid-off by debutant Chadd Sayers.
Handscomb ultimately chose to leave the delivery but the ball swung-in sharply, clipping the edge of his bat before crashing onto the stumps leaving Australia reeling at 38-3.
The other wicket to fall for South Africa after lunch was that of Vernon Philander when he was caught by Usman Khawaja at deep-square leg from the bowling of Lyon.
Temba Bavuma made 95 not out after he and Quinton de Kock fought their way through a testing early period against a ball that was nearly new in gloomy conditions.