Hannes Marais évolue avec plusieurs provinces qui disputent la Currie Cup : Western Province, Eastern Province, North Eastern Cape puis de nouveau l'Eastern Province. Il dispute à 21 ans son premier test match le contre les Wallabies. Il joue son dernier test match contre la France le . De 1963 à 1965, il dispute 7 matchs sur les 8 matchs consécutifs avant de ne pas être retenu pendant un an et 9 rencontres. De 1968 à 1971 il dispute toutes les rencontres des Springboks, soit 23 matchs; il manque un match en 1972 puis dispute les 6 rencontres des Springboks de 1974. Ses 11 dernières sélections lui permettent d'avoir le titre honorifique de capitaine.