Off-spinner Simon Harmer bowled South Africa to a first Test win in India in 15 years after home skipper Shubman Gill was hospitalised with neck spams and unable to bat as his side slumped chasing 124 for victory on day three in Kolkata.