Having grabbed five wickets in the first innings, Rabada ripped through the Bangladesh batting order again on the third day of the second test at the Mangaung Oval. He finished with match figures of 10-63 as Bangladesh were bowled out for 172 in their second innings after being asked to follow-on.
Bangladesh were dismissed for 147 in their first innings in reply to South Africa’s mammoth 573 for four declared.
South Africa also won the first of the two-match series with a 333-run victory at Potchefstroom.
The 22-year-old Rabada reached a century of wickets in just his 22nd test, shouldering the bowling responsibility in the absence of the injured Morne Morkel, Vernon Philander and Dale Steyn.
Taijul Islam and Rubel Hossain were then bowled by Rabada, as he cleaned up the tail to finish with second-innings figures of 5-30.
South Africa had set the foundation for victory with 428 runs on the opening day on Friday with four players making centuries against a mediocre bowling attack.
Rabada, however, showed there was life in the wicket as he turned in a virtuoso display.
South Africa and Bangladesh will now play three One-Day Internationals and two Twenty20s.