The 22-year-old Bess, playing in his fourth Test after being called up as cover for his sick Somerset teammate Jack Leach who has since flown home, finished the day with five for 51.
He might have had more as Root dropped a regulation slip catch to reprieve the stubborn Nortje who bravely defied the hostility of Mark Wood and the guile of Bess.
He had batted for 193 minutes and faced 136 balls when he edged a ball from Ben Stokes to Root at second slip. This time the England captain held on.
De Kock showed the familiar muscularity which brought him half-centuries in the first two Tests, clubbing nine fours in his 63. He had added 54 for the seventh wicket with Vernon Philander, 27 not out, when stumps were drawn.
In spite of the poor weather forecast for the next two days, England remain well-placed to take a 2-1 lead in the four-match series.
The second new ball was taken for the last three balls of the day, bowled by Bess at a time when fading light allowed only spinners to be used.
It will be available for the fast bowlers at the start of play on Sunday and if the tourists are able to wrap up the innings quickly they will probably enforce the follow-on because of the possibility of more rain on the remaining two days.
Bess took all his wickets in an unchanged 23-over spell from the northern, Duck Pond end, from late on Friday, when he took his first two wickets, until after lunch on Saturday.
Following Ollie Pope’s century on the second day, it was the second breakthrough performance by a 22-year-old for England. Bess had taken a total of five wickets in his previous three Tests at a cost of 48 runs each.
He was the first England spin bowler to take the first five wickets in an innings since Derek Underwood claimed the first seven against Australia in Adelaide in 1974/75.
Pope aided his fellow young team-mate by taking three catches off Bess’s bowling, two at short leg and one at silly point.
Stokes was not brought into the attack until the 61st over. He claimed Nortje’s wicket with his tenth delivery. But England’s talisman dropped three slip catches off De Kock.
The first two, when de Kock was on 30 and 56, were off Root with the third in the penultimate over came off Joe Denly’s leg-spin.
Bess struck in the fourth over of the day when Dean Elgar was caught for 35 off bat and pad at silly point by Pope.
Proteas’ captain Faf du Plessis used his feet to off-drive fours off the third and fourth balls he faced from Bess, who switched from round the wicket to over the wicket and two balls later had Du Plessis caught by Pope at short leg, again off bat and pad.
Rassie van der Dussen made 24 before chopping an attempted cut off Bess into his stumps, one over after hitting 11 runs off the spinner.