Philander, 26, reached the milestone in only his seventh Test as New Zealand folded for 275 in their first innings in reply to South Africa's 474-9 declared, avoiding the follow-on by just a single run.
At stumps on the fourth day, South Africa, who hold a 1-0 lead in the three-Test series, were 75 without loss in their second innings, leading by 274 runs with one day remaining.
First innings centurion Alviro Petersen is not out 38 with captain Graeme Smith on 34 as the tourists look to bat New Zealand out of contention.
New Zealand's fading hopes of levelling the series received a severe setback when captain Ross Taylor was hit on the left forearm by paceman Morne Morkel.
He was taken to hospital where an x-ray confirmed a broken bone and team management said he was unlikely to take any further part in the game.
With the senior batsman out of action, Philander made the most of the short route to the New Zealand tail, finishing with six for 81 and tightening South Africa's grip on the Test.
New Zealand were 160-3 with Taylor on 18 when he was hit. They made it to 219-3 before they lost another wicket but slumped from 263-5 to 263-8, leaving tailenders Mark Gillespie and Chris Martin needing to add 12 runs to avoid the follow-on.
The home side resumed in the morning at 65-0 with openers Daniel Flynn and Martin Guptill fighting their way to 86 and seeing off hostile bowling from Dale Steyn and Morkel before Philander started the damage.
Flynn, in the unfamiliar role of opener and playing his first Test in two years, went for 45, nicking a ball in Philander's first over of the day to wicketkeeper Mark Boucher.
Brendon McCullum had two lives on his way to 31, including being dropped at point by JP Duminy off Steyn.
Duminy had earlier spilled two edges from Guptill, off Steyn's bowling, when fielding in the gully. Guptill went on to make 59 before he was trapped lbw by Philander in the last over before lunch.
When Taylor was taken to hospital and diligence was required by New Zealand, Dean Brownlie and Kane Williamson made cautious progress in a 59-run stand until the new ball arrived and Brownlie top-edged Philander, dismissed for 29.
New Zealand went to tea at 231-4 and the innings collapsed soon after play resumed.
After Steyn claimed Williamson for 39, Philander came back to remove Daniel Vettori (30) and Doug Bracewell (0). Marchant de Lange picked up the wicket of Kruger van Wyk (7).
Two lusty fours from Gillespie ensured South Africa would have to bat again before he became Philander's sixth victim, caught by AB de Villiers for 10.
Petersen and Smith were untroubled, taking South Africa through to stumps, with a declaration expected on the final morning.