Ntini took three for 13 in 10 overs, five of which were maidens, as Bangladesh slumped to 153 for seven at stumps in reply to South Africa’s first innings of 529 for four declared.
South Africa had resumed on 369 for two and captain Mark Boucher declared 40 minutes after lunch.
Gary Kirsten scored 150, his 15th test century, while Jacques Kallis made an unbeaten 75 and became the fifth player to complete the double of 4,000 runs and 100 wickets in test matches.
West Indians Garfield Sobers - who reached the milestone in the fewest tests, 43 - and Carl Hooper, Kapil Dev of India and Englishman Ian Botham are the other players in the group.
The 27-year-old Kallis batted for three hours, faced 138 balls and hit nine fours while debutant Martin van Jaarsveld was 39 not out in an unbroken fifth-wicket stand of 81.
South Africa lost their third wicket after an hour when the left-handed Kirsten steered a square drive off the bowling of medium pacer Talha Jubair to Alok Kapali at backward point.
Kirsten, who became the first player to score centuries against all nine test-playing countries, was at the crease for more than five hours in which he faced 223 balls and hit 14 fours.
The same Bangladeshi combination struck in similar fashion in Jubair’s next over to dismiss Ashwell Prince for two.
Both wickets fell because of batting errors rather than penetrative bowling as the visitors’ modest attack failed to make an impression on the steadily flattening pitch.
South Africa’s new ball pair of Mornantau Hayward and David Terbrugge also struggled to settle on a line and length but, in the eighth over, Javed Omar played back to an angling delivery from Terbrugge and was trapped in front for seven.
Ten balls later, Al-Shariar was bowled around his legs for 18 by Hayward, the ball ricocheting from his thigh pad into his armpit and on to the stumps.
Boucher brought Ntini into the attack after tea and he struck in his sixth over when Sanwar Hossain, on 31, fended a sharply lifting delivery behind to end a third-wicket stand of 66 Habibul Bashar.
In Ntini’s next over, Tushar Imran ducked into a short pitched ball and was bowled via a deflection for no score.
Top scorer Bashar, who made 38, was next to go, dismissed by Ntini as he sparred at a wide delivery and was caught behind.
Ntini’s destructive opening burst of three wickets for just nine runs had reduced Bangladesh to 100 for five.
Captain Khaled Mashud was unlucky to be given out caught in the slip cordon off his shoulder for four shortly before the close, with Hayward was the fortunate bowler.
Meanwhile, Jacques Kallis defended South African captain Mark Boucher’s declaration on the second day.
Boucher declared his side’s first innings closed on 529 for four, leaving Kallis marooned on 75 not out.
South Africa (1st Innings) (overnight 369-2)
G.Smith c Manjural b Sanwar 200
H.Gibbs c Tushar Imran b Baishya 41
G.Kirsten c Alok Kapali b Talha 150
J.Kallis not out 75
A.Prince c Alok Kapali b Talha 2
M.van Jaarsveld not out 39
EXTRAS (b-2 lb-1 nb-15 w-4) 22
TOTAL (for four wickets, declared) 529
FALL OF WKTS: 1-87 2-359 3-440 4-448
DID NOT BAT: M.Boucher, D.Terbrugge, M.Ntini, M.Hayward, C.Henderson
BOWLING: Manjural Islam 29-3-104-0 (w-1), Tapas Baishya 30-3-148-1 (nb-7), Talha Jubair 26-5-108-2 (nb-4 w-3), Mohammad Rafique 23-2-85-0 (nb-2), Alok Kapali 18-0-72-0 (nb-2), Sanwar Hossain 3-0-9-1
BANGLADESH (1st Innings)
Javed Omar lbw b Terbrugge 7
Al-Shariar b Hayward 18
Habibul Bashar c Boucher b Ntini 38
Sanwar Hossain c Boucher b Ntini 31
Tushar Imran b Ntini 0
Alok Kapali c Kallis b Henderson 35
K. Mashud c Jaarsveld b Henderson 4
Mohammad Rafique not out 10
Tapas Baishya not out 1
EXTRAS (lb-8 nb-1) 9
TOTAL (for seven wickets, 49 overs) 153
FALL OF WKTS: 1-21 2-25 3-91 4-97 5-100 6-130 7-149.
TO BAT: Manjurul Islam, Talha Jubair.
BOWLING (to date): Hayward 15-3-50-2 (nb-1), Terbrugge 7-2-33-1, Henderson 9-2-23-1, Ntini 10-5-13-3, Kallis 8-2-26-0.—Reuters