Bangladesh 330 for 6 (Mushfiqur 78, Shakib 75, Phehlukwayo 2-52) beat South Africa 309 for 8 (du Plessis 62, Mustafizur 3-67) by 21 runs
These teams seem to bring out extremes in one another. In previous World Cups, that has meant one-sided games, in which one side completely dominated the other - as South Africa did with a 10-wicket thumping in their first encounter in Bloemfontein in 2003. Four years later, it was Bangladesh's turn to bring the pain as an array of left-arm spinners sent South Africa spiralling to a 67-run defeat at Providence. The pendulum swung back when Bangladesh wilted to 78 all out under lights in Mirpur in 2011. And now it's swung once more, Bangladesh excelling to soar to a 21-run win.
WATCH on Hotstar - Shakib Al Hasan's solid 75 (Available to viewers in India only)
That result would make this officially the closest South Africa-Bangladesh match in ODI history, but on a day when South Africa were outplayed in all departments, that wasn't saying much. This was Bangladesh's second ever World Cup win over South Africa and, hinting at the momentum they have behind them, their fifth win in their last five completed ODIs.
South Africa's fast bowlers huffed and they puffed, but they couldn't blow Bangladesh's house down. In fact, it was quite the opposite, as Bangladesh's batsmen studded their innings Manhattan with skyscrapers.
Along the way, Bangladesh's achievements, collective and individual, were both many and noteworthy. Shakib Al Hasan became the first Bangladeshi - and fastest cricketer - to the double of 250 wickets and 5,000 runs in ODIs, getting there quicker than the likes of Shahid Afridi and Jacques Kallis. Bangladesh reached 330 for 6, their highest total in ODIs, smashing their previous best against South Africa by 52 runs.
That they soared so high was thanks mainly to a 142-run stand between Shakib and Mushfiqur Rahim, which is also Bangladesh's highest in World Cups. Together they built on the solid early efforts of Soumya Sarkar, who took on the short ball with gumption, showing echoes of his early outings against the South Africans at home way back in 2015, when he ramped and hooked his way to 205 runs in three innings to help his team to a 2-1 series win.
WATCH on Hotstar - Mushfiqur's 78 lifts Bangladesh (Available to viewers in India only)
Today, he got his team off to an excellent start with a fluid 60-run opening stand with Tamim Iqbal. South Africa clearly had a plan with the ball, and Faf du Plessis said as much at the toss, telegraphing his intentions by saying: "We're playing the extra seamer today so we want to try and attack Bangladesh with some extra pace." But once Bangladesh showed they were happy to take the short ball on, South Africa floundered for a back-up.
There was much fanfare about the potential in South Africa's bowling attack before this tournament. Kagiso Rabada, Dale Steyn, Lungi Ngidi and Imran Tahir are all match-winners in their own right, and having all four in the same line-up was South Africa's Plan A. But Steyn is yet to recover from the shoulder flare-up that cut short his IPL jaunt, Ngidi limped off with a tweaked hamstring after bowling four wicketless overs in which he leaked seven boundaries, and Rabada endured one of his rare off days, conceding 0 for 57 in his ten overs.
Worse still, South Africa had one of their worst days in recent memory in the field. The trouble started as early as the fifth over, when a regulation edge flew right between du Plessis and Aiden Markram in the slips, gifting Sarkar a second life. Then, as the partnership between Shakib and Mushfiqur grew, South African shoulders sagged and their energy in the field flatlined.
Misfields aplenty - and most egregious of all, Chris Morris' amateurish effort at short fine leg when Mushfiqur swept a ball from Tahir almost straight to him in the 20th over - eased the pressure whenever it started to build. Shakib was first to his fifty, getting there in the 26th over, Mushfiqur following him to the mark three overs later. Neither could kick on to three figures, but Mahmudullah ensured their efforts were not wasted, and Bangladesh's innings crescendoed as 54 runs came from the final four overs.
South Africa's batting was equally rudderless. Quinton de Kock, so vital to South Africa's success at home last summer, was dismissed inside the Powerplay, and though Nos. 2 to 6 all scored 38 or more, and got themselves in, none was able to kick on, bat through, and see their team home. Every time they needed one, Bangladesh were able to conjure a wicket. The final result might suggest this was the closest match in these two teams' shared one-day history, but the reality was that there were very few moments when South Africa were not left chasing the game.
Liam Brickhill is ESPNcricinfo's South Africa correspondent