Marco van Staden connaît un début de carrière loin des sentiers habituellement réservés aux joueurs de haut niveau puisqu'il doit se contenter de jouer avec son lycée de Hoërskool Bekker dans la petite ville de Magaliesburg dans le Gauteng[3]. Il ne joue aucune édition de la Craven Week, et ne connait aucune sélection avec les sélections jeunes sud-africaines, mais en revanche, il rejoint en 2014 l'académie des Blue Bulls[3]. En 2016, il tente de rejoindre l'Université du Nord-Ouest et son équipe de rugby des NWU Pukke disputant la Varsity Cup(en) (championnat universitaire sud-africain), mais il n'est pas pris[3]. En lieu et place, il rejoint les UP Tuks (Université de Pretoria), avec qui il se fait rapidement remarquer par ses performances en Varsity Cup[3].
Il commence sa carrière professionnelle avec les Blue Bulls en 2017 lorsqu'il dispute la Rugby Challenge[1],[4]. Il fait également ses débuts en Currie Cup cette même année[3],[5].
En novembre 2017, il est retenu dans le groupe élargi des Bulls pour préparer le Super Rugby, mais n'obtient pas de contrat professionnel[6],[7]. Malgré cela, il se montre performant lors des entraînements et joue son premier match le contre les Hurricanes[3],[8]. Il effectue alors une première saison réussie (seize matchs dont onze titularisations) et prolonge avec cette franchise pour une saison de plus[9].
En 2021, il rejoint le club anglais des Leicester Tigers évoluant en Premiership[10]. Au terme de sa première saison, où il est peu utilisé à cause de plusieurs commotions cérébrales, il quitte le club d'un commun accord et rentre en Afrique du Sud[11]. Ces commotions mettent alors la poursuite de sa carrière en danger[12].
Finalement, en , il se réengage avec les Bulls en United Rugby Championship, et fait son retour sur les terrains après huit mois d'absence[13].
En équipe nationale
Marco van Staden est pressenti pour rejoindre les Springboks en juin 2018, mais une blessure au genou l'écarte des terrains plusieurs semaines[3]. Quelques mois plus tard, il est sélectionné pour la première fois par le sélectionneur Rassie Erasmus dans le cadre du Rugby Championship 2018[14]. Il obtient sa première cape internationale le à l’occasion d’un match contre l'équipe d'Argentine à Durban[15].
L'année suivante, il est rappelé en sélection afin de remplacer le capitaine Siya Kolisi blessé, et préparer la Coupe du monde 2019[16]. Il dispute un match de préparation contre l'Argentine en en [2]. Peu après, il fait partie des quatre joueurs écartés lorsque le groupe des Springboks est réduit à 36 joueurs, subissant notamment le retour de blessure de Kolisi[17].