Rabada finished with 9-72 in the match, having become the fastest bowler to reach 300 Test wickets during the first innings.
‘It’s special,’ stand-in captain Aiden Markram said of a victory that was sealed before lunch on day four and gave South Africa a 1-0 lead in the two-match series.
They move up to fourth in the World Test Championship standings.
‘A pretty young group, or slightly inexperienced group… to come to the subcontinent and get a win is great for us,’ Markram added.
Left-arm spinner Taijul Islam took all the wickets to fall in his 3-43, but he failed to slow South Africa’s chase as they reached 106-3.
Tony de Zorzi top-scored with a quickfire 41 off 52 balls, hitting seven fours.
Fellow opener Markram was first to go, bowled by Taijul for 20.
De Zorzi departed in the 16th over trying to play a big shot over long-on, caught by Hasan Mahmud.
David Bedingham was third out caught behind by wicketkeeper Litton Das.
Tristan Stubbs, unbeaten on 30, ensured there were no further alarms.
‘He has been a superstar for us for years,’ Markram added of Rabada.
‘And to see all those stats pop up about him… it really proves that he’s one in a million, and we’re really lucky to have him on our team.’
‘Disappointing’: Bangladesh lost their last three wickets for just 24 runs inside half an hour, all-rounder Mehidy Hasan Miraz top-scoring with 97.
‘Missing out on the century is disappointing,’ said Mehidy.
‘I would have been happy if I had executed the plan better. I was only focusing on guiding the team to a strong position.’
Nayeem Hasan departed lbw without adding to his overnight 16 on the third ball of the day when a rampant Rabada inswinger kept low.
Wiaan Mulder removed Taijul for seven in the fourth over via a thick edge to Stubbs at third slip.
Mehidy fell three runs short of his second Test century in the next over when he edged Rabada to Mulder at slip.