Fernandes wechselte 2008 in die Jugend vonBoavista Porto. Die Saison 2009/10 spielte er auf Leihbasis beimADR Pasteleira, 2012 wechselte er zuNovara Calcio nachItalien. Dort kam er ab November 2012 neben der Jugendmannschaft auch schon in der ersten Mannschaft zum Einsatz. So gab er am 3. November 2012 bei der 0:1-Niederlage im Heimspiel gegen dieAS Cittadella sein Debüt in derSerie B, bei dem er in der 77. Minute fürSimone Pesce eingewechselt wurde. Sein erstes Tor erzielte er am 22. Februar 2013 zur 1:0-Führung nach 22 Minuten beim 6:0-Sieg beiSpezia Calcio. Mit Novara Calcio belegte er am Saisonende den fünften Platz und qualifizierte sich somit für diePlay-Offs um den Aufstieg in die Serie A, bei denen sie sich im Halbfinale allerdings demFC Empoli geschlagen geben mussten.
ZurSaison 2013/14 wechselte Fernandes zuUdinese Calcio in dieSerie A. Am 3. November 2013 debütierte er bei der 0:3-Niederlage im Heimspiel gegenInter Mailand. Insgesamt absolvierte er für Udinese 86 Ligaspiele und erzielte dabei elf Tore. ZurSaison 2016/17 wurde Fernandes mit Kaufpflicht an den LigakonkurrentenSampdoria Genua verliehen.[2]
ZurSpielzeit 2017/18 wechselte Fernandes zuSporting Lissabon.[3] In seiner ersten Saison gewann er mit der Mannschaft denLigapokal. In 33 Ligaeinsätzen erzielte er elf Tore. Nachdem Sporting Lissabon im Mai 2018 die Qualifikation für dieChampions League verpasst hatte, wurde das Trainingsgelände und die Umkleidekabine des Klubs von gewalttätigen Anhängern gestürmt. Sein TeamkollegeBas Dost erlitt eine Kopfverletzung.[4] Daraufhin kündigte Fernandes – neben TrainerJorge Jesus,William Carvalho,Gelson Martins,Rui Patrício,Daniel Podence und Bas Dost – seinen Vertrag zum Saisonende, da „gültige Motive“ für eine einseitige Vertragsauflösung vorlägen.[5][6][7] Im Juli 2018 unterschrieb Fernandes einen neuen Vertrag bei Sporting Lissabon mit einer Laufzeit bis zum 30. Juni 2023.[8]
Im Januar 2020 wechselte Bruno Fernandes in die englischePremier League zuManchester United und unterschrieb einen bis zum 30. Juni 2025 laufenden Vertrag.[9] Mit der Mannschaft unterlag er im Finale derUEFA Europa League 2020/21 im Elfmeterschießen gegen denFC Villarreal.[10] Im März 2022 verlängerte er seinen Vertrag bis 2026 mit Option auf ein weiteres Jahr.[11]