A joint team effort first in batting and then while bowling gave Bangladesh their maiden victory on South African soil across any format as the Tigers beat the Proteas by 38 runs in the first of three ODIs Friday at SuperSport, Centurion.
Chasing 315, South Africa were all out for 276 with seven balls to spare as Bangladesh took a 1-0 lead with the second and penultimate ODI scheduled for Sunday.
Mehedi Hasan Miraz (4/61) did well to come back and pick up four wickets after going for runs initially while Taskin Ahmed (3/36) was brilliant with his probing spells.
In a high scoring match, conceding only 36 runs in 10 overs was a brave effort by the ever improving Taskin, who received valuable support from young quick Shariful Islam (2/47).
Rassie van der Dussen top-scored for the home side with a 98-ball 86, studded with nine fours and a six, while David Miller flashed a 59-ball 79, featuring eight fours and three sixes.
When these two were going along fine the Proteas had a glimmer of hope but the clinical Tigers snuffed out both dangers eventually.
Earlier, Bangladesh posted a more than competitive score of 314 runs losing seven wickets in 50 overs - their highest total in 10 ODIs in South Africa.
The Tigers began their tour on a positive note, putting up a big total after a combined effort from the visiting batsmen, including three half-centuries from Shakib al Hasan (77), Yasir Ali and Liton Das (50 each).
Asked to bat first by Proteas captain Temba Bavuma, ODI captain Tamim Iqbal (41) and Liton laid the foundation with a composed 95-run opening partnership.
They started cautiously, scoring only 46 runs off the first 15 overs as they saw off South Africa's fast bowlers.
Tamim and Liton faced identical 67 balls in their innings but following their departure, Bangladesh also lost Mushfiqur Rahim (nine) to get reduced to 124/3.
Shakib and Yasir though steadied the ship with a brilliant 115-run stand for the fourth wicket; the former facing just 64 deliveries in his brisk knock featuring seven fours and three sixes.
Shakib's sparkling innings came six days after he changed his mind about missing the South African tour.
The sturdily built Yasir hit his maiden fifty after his only two previous ODI innings had produced just one run.
Mahmudullah (25) and Afif Hossain (17) put the finishing touch while Mehedi Hasan Miraz (19 not out) and Taskin Ahmed (seven not out) remained unbeaten to give Bangladesh a challenging total in the end.
South Africa's Marco Jansen and Keshav Maharaj picked up two wickets each.
The bowlers took some heavy punishment as the innings blossomed.
Lungi Ngidi, who conceded only 18 runs in five overs with the new ball, leaked 57 runs off his remaining five overs.
It took a rattled South Africa 30 minutes longer than the allotted three-and-a-half hours to bowl their overs.
A small group of Bangladesh supporters provided vocal encouragement to their team in a stadium with a capacity restricted to 2000 because of coronavirus restrictions.
Playing XIs
Bangladesh: Tamim Iqbal (capt), Liton Das, Shakib al Hasan, Mushfiqur Rahim (wk), Yasir Ali, Mahmudullah, Afif Hossain, Mehedi Hasan Miraz, Taskin Ahmed, Shariful Islam, Mustafizur Rahman
South Africa: Kyle Verreynne (wk), Janneman Malan, Temba Bavuma (capt), Aiden Markram, Rassie van der Dussen, David Miller, Andile Phehlukwayo, Dwaine Pretorius, Kagiso Rabada, Marco Jansen, Lungi Ngidi