New Zealand were 181 for three at tea on Thursday. Skipper Fleming was on 54 not out after sharing an unbeaten fourth wicket stand of 99 with Astle (47 not out).
South African captain Graeme Smith's decision to send New Zealand in was surprising on a pitch which held no terrors for the batsmen.
After the start was delayed for 30 minutes by morning dew, South Africa were unable to make an early breakthrough, with Michael Papps and Peter Fulton putting on 50 for the first wicket.
But three wickets fell for 32 runs to give the home side the advantage before Fleming and Astle came together.
Astle seemed fortunate when he was on nine and the partnership was worth 17 when he appeared to edge a ball from Andre Nel to wicketkeeper Mark Boucher.
Nel and the slips cordon went up in a confident appeal but umpire Mark Benson gave Astle not out.
Fleming, meanwhile, batted with determination to back up his call for New Zealand to bat better than they did in the first Test at Centurion, where South Africa won by 128 runs.
He reached his half-century after batting for 161 minutes and facing 109 balls. He hit six fours.
Andre Nel claimed the only wicket of a shortened morning when he bowled Michael Papps for 22.
Nel played in place of all-rounder Shaun Pollock, who was a late withdrawal from the South African team because of lower back pain.
Dale Steyn had Peter Fulton caught behind for 36 eight balls after lunch and Makhaya Ntini had Scott Styris caught at first slip for 11.
Ntini earlier felled Styris with a ball which struck the left earpiece of the batsman's helmet.