Opener Trisha Chetty made 90 and skipper Mignon du Preez compiled 38 as the hosts threatened a big score when they reached 119 for one.
But Shrubsole, who had earlier snared opener Laura Wolfvaardt lbw for five, returned to the attack with devastating effect.
— England Cricket (@englandcricket) February 7, 2016
The 24-year-old Somerset seamer had du Preez caught at midwicket by Heather Knight, trapped Marizanne Kapp leg-before with an inswinger first ball, and bowled Lizelle Lee for 12 to reduce the hosts to 137 for four.
Jenny Gunn had Dane van Niekerk held by skipper Charlotte Edwards for 11 and Heather Knight caught and bowled Chloe Tryon for a duck, before snaring the key wicket of Chetty, who was caught behind by Sarah Taylor 10 runs shy of what would have been a maiden international century.
Becky Grundy had Shabnim Ismail caught by Lauren Winfield at mid-on for one, Edwards ran out Marcia Letsoalo with a direct hit and Gunn bowled Sune Luus with the second ball of the final over as South Africa women failed to reach 200.