Morne Morkel was at his most menacing as he recorded career-best one-day international figures to help South Africa level their series against Australia in a low-scoring match in Perth.
The lanky paceman exploited favourable pace and bounce at the WACA Ground en route to taking 5-21 as the hosts were blown away for 154 inside 42 overs.
Yet with Australia, minus injured skipper Michael Clarke, boasting their own enviable fast bowling talents on such a juicy pitch, a Proteas victory was not a given.
And so it proved as Josh Hazlewood's own five-for set up a nervy finale, with the tourists eventually getting over the line by three wickets, thanks in part to AB de Villiers' counter-attacking 48 from 41 deliveries.
Having lost Friday's first encounter at the same venue, South Africa were eager to bounce back and made an ideal start despite losing the toss.
Morkel had David Warner caught behind down leg for nought on review. Aaron Finch and Shane Watson also fell cheaply before Steve Smith top-edged Morkel to mid-on.
Captain George Bailey and local boy Mitchell Marsh steadied the ship with a fifty partnership that ended when Bailey, attempting to pull, miscued Vernon Philander to mid-on to depart for 25.
Morkel was brought back into the attack for the batting powerplay and dismissed Matthew Wade for 19, just like Warner, before Glenn Maxwell played on two deliveries later.
Mitchell Johnson then edged through to the wicketkeeper to give Morkel his five-for as Australia veered towards complete collapse.
Only a battling half-century from Marsh lifted them beyond 150, with the promising all-rounder hitting two sixes before he was last man out for 67 off Steyn, who took 3-35.
Hazlewood and Johnson struck early in the reply to respectively oust Quinton de Kock and Hashim Amla via edges behind.
Rilee Rossouw, who had made four ducks in his previous six ODIs, eased the pressure somewhat but fell for a quickfire 30 to Maxwell.
De Villiers continued the counter-attack, yet Hazlewood pegged back the Proteas by accounting for du Plessis and Farhaan Behardien in successive deliveries.
De Villiers charged at Hazlewood only to get a thick edge behind and the pressure on South Africa increased when Philander could only fend to gully to give Hazlewood his first international five-for.
But with just two runs required for victory, Steyn crashed a four down the ground two balls later to complete victory in 27.4 overs.
Johnson has been rested for the remainder of the series with fellow pacemen Pat Cummins and Mitchell Starc called into the squad while Xavier Doherty has been preferred to Nathan Lyon as spinner for the rest of the rubber. James Faulkner will join the squad for the fourth and fifth games, when fellow all-rounder Marsh will leave the party to play state cricket.