The hosts looked to be cruising when they reached 96 without loss in reply to England's 147 for seven.
But Shrubsole took 3-9 in her second two-over spell, and with the run-rate mounting South Africa capitulated to finish on 132 for six.
Earlier Sarah Taylor had led the way as England recovered from 41 for three and 81 for five.
Taylor thrashed 74 from 51 balls, including 11 boundaries, and the wicketkeeper-batter and Shrubsole took 18 from Shabnim Ismail's final over to boost the tourists' total.
Skipper Charlotte Edwards, back at the top of the order after moving to number three in the one-day internationals, Tammy Beaumont and Amy Jones all fell cheaply after Mignon du Preez won the toss and elected to field.
— England Cricket (@englandcricket) February 18, 2016
Heather Knight added 18 from 11 balls but she and Danni Wyatt fell in quick succession as the tourists limped to 81 for five.
Georgia Elwiss offered Taylor some much-needed support with 18, and although Jenny Gunn made only two, Shrubsole ensured there was a late wag in the tail with 10 off four balls, with Taylor finishing just three short of her career-best T20 international knock.
Dane van Niekerk and Trisha Chetty got the home side off to the perfect start, but while they made 52 and 46 respectively, their low-risk approach meant the run-rate had climbed to 8.5 an over when they fell within the space of four balls.
Van Niekerk was well held on the midwicket boundary by Wyatt to give Shrubsole her first scalp, before Gunn trapped Chetty lbw.
The Proteas never threatened to recover from that double setback, with the large boundaries playing into England's hands as Jones held two catches at deep midwicket – the first a one-handed screamer to send the dangerous Lizelle Lee on her way for eight.
Shrubsole finished with 3-25, Gunn took 2-28, and there was a late wicket for spinner Dani Hazell as South Africa came up well short.