Ian Bell, under pressure from Shah for a place in the opening Test in Jamaica, was caught for 36 after he drove hard at Willett's seconddelivery of the day.
Steyn claimed his second wicket of the day as Clarke (25) edged a wide delivery to Kallis, Symonds (37) was caught by Graeme Smith off Harris and Lee had added just five runs before Kallis struck for a second time.