Il commence sa carrière aux Black Leopards en National First Division (deuxième division). Après 12 apparitions, il termine deuxième du championnat, et voit promu en Absa Premiership (première division). Il joue son premier match dans l'élite le , lors d'une défaite 2-0 contre le club d'Orlando Pirates[1]. Le , il inscrit son premier but contre le Bloemfontein Celtic (2-2)[2]. Son bilan pour la saison 2011-2012 est de trois buts en 23 rencontres, et un maintien obtenu de justesse. Son bilan personnel est identique la saison suivante, mais le club termine lanterne rouge.
Mamelodi Sundowns
En , il s'engage avec le club des Mamelodi Sundowns[3]. Il fait ses débuts le , face à Golden Arrows (victoire 2-0)[4]. Pour sa première saison, il ne participe qu'à trois rencontres, mais il est tout de même sacré champion en fin de saison.
Prêt à Free State Stars
Afin de gagner du temps de jeu, il rejoint Free State Stars sous forme de prêt en [5]. Il joue sa première rencontre le , contre AmaZulu (0-0)[6], et marque son unique but quatre journées plus tard contre le Bloemfontein Celtic (victoire 1-0)[7].
Retour aux Sundowns
De retour de prêt, il n'est pas beaucoup utilisé en championnat, mais se voit tout de même sacré pour la seconde fois. Il marque dès ses débuts en Ligue des champions de la CAF contre l'ES Sétif le (victoire 2-0)[8]. Son équipe soulève le trophée, et il participe à l'intégralité de la double confrontation en finale contre le club égyptien de Zamalek (3-0, 0-1)[9],[10].
Lors de la saison suivante, il marque son premier but en championnat sous les couleurs des Sundowns, face à Bloemfontein Celtic (victoire 4-1)[13]. Pour la troisième fois, il est sacré champion. Il remporte à nouveau le titre en 2018-2019.
Il est ensuite sélectionné pour la Coupe d'Afrique des nations 2019 organisé en Égypte, mais doit se contenter du banc des remplaçants. L'Afrique du Sud s'incline en quart de finale face au Nigeria[16].