Tilak Varma became the second youngest Indian to score a T20I century, finishing unbeaten on 107 as India posted their highest-ever T20I total in South Africa.