Erste internationale Erfahrungen sammelte Mário Silva im Jahr 1981, als er bei den Junioreneuropameisterschaften in Utrecht mit 8:33,69 min in der Vorrunde im 3000-Meter-Lauf ausschied. 198 schied er bei den Halleneuropameisterschaften in Madrid mit 1:52,91 min im Vorlauf über 800 Meter aus und im August kam er bei den Freilufteuropameisterschaften in Stuttgart mit 3:42,04 min nicht über die Vorrunde über 1500 Meter hinaus. Im Jahr darauf schied er bei den Weltmeisterschaften in Rom mit 3:41,12 min im Halbfinale im 1500-Meter-Lauf aus. 1988 belegte er bei den Halleneuropameisterschaften in Budapest in 7:58,95 min den sechsten Platz über 3000 Meter und im Sommer nahm er über 1500 Meter an den Olympischen Sommerspielen in Seoul teil und gelangte dort mit 3:38,77 min im Finale auf Rang neun. Im Jahr darauf belegte er bei den Halleneuropameisterschaften in Den Haag in 7:55,89 min den achten Platz über 3000 Meter und anschließend schied er bei den Hallenweltmeisterschaften in Budapest mit 3:47,92 min im Vorlauf über 1500 Meter aus. 1990 belegte er bei den Halleneuropameisterschaften in Glasgow in 7:56,34 min den fünften Platz über 3000 Meter und im September gewann er bei den Europameisterschaften in Split gewann er in 3:38,73 min die Bronzemedaille hinter Jens-Peter Herold aus der DDR und dem Italiener Gennaro Di Napoli. 1991 gewann er bei den Hallenweltmeisterschaften in Sevilla in 3:43,85 min die Bronzemedaille hinter dem Algerier Noureddine Morceli und Fermín Cacho aus Spanien. Im September erreichte er bei den Weltmeisterschaften in Tokio das Finale und belegte dort in 3:35,76 min den sechsten Platz. Im Jahr darauf nahm er erneut an den Olympischen Sommerspielen in Barcelona teil und schied dort mit 3:38,09 min im Semifinale aus. 1993 belegte er bei den Hallenweltmeisterschaften in Toronto in 3:46,61 min den siebten Platz und im Sommer schied er bei den Freiluftweltmeisterschaften in Stuttgart mit 3:42,85 min im Halbfinale aus. Im Jahr darauf kam er bei den Halleneuropameisterschaften in Paris im Finale über 3000 Meter nicht ins Ziel und kam auch im Vorlauf über 1500 Meter nicht ins Ziel. Nach einem Vorläufigen Karriereende 1995, kehrte er 1999 zum aktiven Laufsport zurück, konnte aber nur noch bei nationalen Wettkämpfen antreten.
- 800 Meter: 1:46,69 min, 25. Juni 1991 in Maia
- 800 Meter (Halle): 1:51,83 min, 13. Februar 2000 in Espinho
- 1000 Meter (Halle): 2:20,71 min, 13. Februar 1993 in Liévin
- 1500 Meter: 3:35,76 min, 1. September 1991 in Tokio
- 1500 Meter (Halle): 3:36,46 min, 28. Februar 1991 in Sevilla
- 3000 Meter: 7:49,99 min, 29. Mai 1988 in Lissabon
- 3000 Meter (Halle): 7:55,89 min, 19. Februar 1989 in Den Haag