Nativo di Pretoria, Willemse si trasferì durante l'infanzia presso la cittadina di Tsumeb, in Namibia, dove iniziò a giocare a rugby nei club locali. Ritornò in Sudafrica nel 2010 per entrare a far parte delle giovanili dei . Con il club di Johannesburg fece il suo esordio in prima squadra durante l'edizione 2012 della Vodacom Cup. Nello stesso anno debuttò anche in Currie Cup e nel Super Rugby con la relativa franchigia dei . Dopo un'unica annata passò ai dove rimase per due stagioni, disputando inoltre le edizioni 2013 e 2014 del Super Rugby con i . Durante il periodo trascorso con il club della città natia rappresentò anche gli UP Tuks, selezione dell'Università di Pretoria, nella Varsity Cup (torneo universitario sudafricano) del 2013 vincendola. Nell'ottobre 2014, si trasferì in Francia nel con cui giocò il Top 14 2014-2015. Nonostante fosse legato alla squadra originaria dell'Isère da un contratto biennale, Willemse ricevette un'offerta per passare al , allora allenato dal sudafricano Jake White. Ciò creò una controversia a proposito della possibilità di realizzare il trasferimento che fu risolta solo tramite il pagamento di un'indennità di 80000€ al Grenoble da parte del Montpellier. La prima stagione nel nuovo club lo vide subito conquistare la Challenge Cup 2015-16 giocando dal primo minuto la finale. Due anni più tardi fu ancora titolare, questa volta nella finale del campionato francese 2017-2018 dove fu sconfitto da .