At lunch in the match at the Western Australian Cricket Association Ground, the home team were struggling at 73-3 after being sent into bat in overcast conditions.
Marcus North on 13 and Adam Voges on one were the not out batsmen.
South Africa struck an early blow when they dismissed regular Test opener and Western Australian skipper Justin Langer for just 21.
Langer, returning after a rib injury, had looked uncomfortable against the opening pace duo of Shaun Pollock and Makhaya Ntini, though showed enough form to belt two fours and a six in his innings lasting 50 balls.
First change bowler Charl Langeveldt made the breakthrough with the score at 30, when he bowled the prodigious Australian with a leg cutter that moved sharply off the wicket and took out the off stump.
Fellow opener Chris Rogers was next to fall, caught near the boundary by Langeveldt as he tried to hook a rising delivery from Andre Nel.
His demise for 22 runs left Western Australia at 51 for two and brought newcomer Clint Heron to the crease.
Heron, playing only his second first-class match, added just 13 runs before edging Pollock behind to acting captain and wicketkeeper Mark Boucher.
Boucher was filling in for Jacques Kallis who was left out of the side with an inflamed elbow while regular captain Graeme Smith was out with an injured finger.
The match is a warm-up for the Proteas, who take on Australia in the first Test, also at this venue, on December 16.