Iqbal, 18, hit nine fours and a six in his 98-ball innings to prop up the Bangladesh innings which was tottering at 89-4 at the half-way mark after skipper Mohammad Ashraful had elected to bat.
Paceman Andre Nel picked the best figures of 3-24 while spinners Paul Harris and Johan Botha took two each as Bangladesh folded up in 48.2 overs.
Other than Iqbal, none of the Bangladeshi batsmen showed any gumption for a fight with most of them throwing away their wickets in reckless fashion.
Iqbal though made his intentions clear right from the start, hitting Charl Langeveldt (2-32) for two fours in the second over.
He was particularly severe on part-timer Jean-Paul Duminy, hitting him for a four to deep extra cover boundary and following it up with a six over the midwicket boundary.
Iqbal reached his fourth ODI fifty with a single off Botha and raised his bat to acknowledge the cheers from a strong holiday crowd at the Chittagong Divisional stadium.
His entertaining knock came to an end in a rather tame fashion when he heaved one straight to long on fielder Albie Morkel off Harris.
It was Langeveldt who gave his team the breakthrough when he had opener Junaid Siddique caught at mid-on for a laboured 24-ball six.
Nel then picked his 100th wicket in one-day internationals when Shahriar Nafees edged one behind to A. B. de Villiers for 12.
De Villiers, keeping in place of the rested Mark Boucher, however missed a chance to run out Iqbal on 34 when the ball slipped out of his hands as he tried to hit the stumps.
He also missed a stumping chance of the same batsman on 66.
Bangladesh awarded one-day caps to Dhiman Ghosh, Roqibul Hassan and left-arm spinner Mosharraf Hossain Rubel while South Africa blooded Hashim Amla and Paul Harris.