Oswin Appollis has fired South Africa into the last 16 of the Africa Cup of Nations with a hard-fought 3-2 win over Zimbabwe.