Розпочинав займатися футболом у футбольній школі клубу «Порту» з рідного міста. 2004 року перейшов до академії столичного «Спортінга». У дорослому футболі дебютував 2012 року виступами за команду дублерів лісабонського клубу.
2013 року дебютував в матчах за головну команду «Спортінга». Першу половину 2014 року здобував ігровий досвід, граючи на умовах оренди за «Віторію» (Сетубал). Влітку 2014 року повернувся з оренди до «Спортінга», де швидко отримав постійне місце у складі основної команди клубу. У 2015 році Маріу завоював Кубок Португалії разом з клубом.
Взимку 2018 року англійський«Вест Гем Юнайтед» оголосив про перехід Маріу на правах оренди з подальшим правом викупу[5]. 30 січня в матчі проти «Крістал Пелес» він дебютував у англійській Прем'єр-лізі[6]. 31 березня в поєдинку проти «Саутгемптона» Жуан забив свій перший гол за «молотобійців»[7]. Загалом за півроку в Англії забив 2 голи у 14 матчах різних турнірів, після чого повернувся до «Інтера».
Після повернення до Італії регулярно отримував ігровий час, провівши в сезоні 2018/19 20 матчів у Серії A. 27 серпня 2019 року на умовах оренди з правом викупу перейшов до московського «Локомотива». Протягом сезону взяв участь у 21 грі «залізничників» в усіх турнірах, проте своїм правом викупу контракту гравця московський клуб не скористався, і португалець повернувся до «Інтера».
6 жовтня 2020 року гравець повернувся до рідного «Спортінга», також на правах оренди.
12 липня 2021 року контракт гравця з «Інтером» було завчасно розірвано за обопільною згодою, а вже наступного дня Жуан Маріу підписав п'ятирічну угоду з «Бенфікою».
30 листопада 2023 року в матчі групового етапу Ліга чемпіонів проти «Інтернаціонале» оформив свій перший в кар'єрі хет-триком[8][9].
Виступи за збірні
2007 року дебютував у складі юнацької збірної Португалії, взяв участь у 55 іграх на юнацькому рівні, відзначившись 10 забитими голами.
Протягом 2012–2015 років залучався до складу молодіжної збірної Португалії. На молодіжному рівні зіграв у 29 офіційних матчах, забив 3 голи. Був учасником молодіжного чемпіонату Європи 2015 року, де на груповій стадії приніс перемогу у першій грі проти збірної Англії, забивши єдиний гол зустрічі. Згодом став співавтором розгромної перемоги над німецькими однолітками, яких у півфіналі змагання португальці здолали з рахунком 5:0. Відіграв також усі 120 хвилин фінального матчу проти збірної Швеції, після чого реалізував свій пенальті у післяматчевій серії, що, втім, не допомогло португальській «молодіжці», яка за пенальті програла скандинавам і посіла друге місце на континентальній першості.
У травні 2016 року був включений до заявки збірної для участі у фінальній частині тогорічного чемпіонату Європи у Франції, на якому зіграв у всчіх семи матчах іграх, в тому числі у фінальній проти Франції[11], і став чемпіоном Європи. 10 листопада 2017 року в поєдинку проти збірної Саудівської Аравії Маріу забив свій перший гол за національну команду[12].
↑Архівована копія. Архів оригіналу за 5 травня 2019. Процитовано 13 березня 2019.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)