Fakhar Zaman and Babar Azam produced more brilliance to help Pakistan seal a 2-1 ODI series win over South Africa on Wednesday.
Pakistan won the decisive third ODI by 28 runs at Centurion.
They set South Africa a target of 321 after Fakhar (101) followed up his memorable innings of 193 last time out – an ODI record score in a run chase – with another century.
Pakistan captain Babar scored a century at this venue in the first ODI and almost repeated the trick before falling for 94, while Hasan Ali smashed 32 from 11 balls as the tourists scored 320-7.
Janneman Malan (70), Kyle Verreynne (62) and Andile Phehlukwayo (54) ensured South Africa – who were playing without their Indian Premier League contingent – were competitive in their run chase.
But they were ultimately bowled out for 292 in the final over as Pakistan continued a fine ODI streak that has seen them lose only two of their last 12 matches.
It is only the second time in 10 attempts that Pakistan have defeated South Africa in a 50-over series, this win coming after their triumph on the 2013 tour.
The two teams now turn their attention to a four-match T20 series which begins on Saturday.
With an all-new seam attack due to the absence of the likes of IPL duo Kagiso Rabada and Anrich Nortje, South Africa struggled to make an impression with the ball.
Fakhar had nine fours and three sixes as he put on 112 with Imam-ul-Haq (57) and then 94 with Babar to leave the tourists at 206-2 by the time his 104-ball innings came to an end.
He was dismissed by Keshav Maharaj, the pick of the Proteas bowlers with figures of 3-45.
The Pakistan innings had a huge finish when Hasan fired four maximums off the bowling of JJ Smuts (1-67) in the penultimate over.
Babar remained until he fell on the final delivery, caught by Verreynne on the boundary as he sought a six that would have taken him to three figures.
South Africa were left needing 76 from the last seven overs with five wickets in hand.
But their hopes of a successful run chase ended when they lost both Verreynne and Phehlukwayo – who put on 108 for the sixth wicket – in the space of seven balls.
It meant defeat for new captain Temba Bavuma, who has been handed the job through to the 2023 Cricket World Cup, in his first series at the helm.