W sezonie 2012/2013 dołączył do drużyny rezerw, Sportingu B, która występuje na zapleczu portugalskiej ekstraklasy. Wystąpił w 31 meczach (30 w pierwszym składzie), przyczyniając się do zajęcia 4. miejsca w lidze. W lutym 2013 zadebiutował także w ligowym meczu pierwszej drużyny, kiedy pojawił się na boisku w spotkaniu z CS Marítimo. W 2015 roku wystąpił w finałowym meczu pucharu Portugalii w którym Sporting pokonał po rzutach karnych SC Braga. 27 sierpnia 2016, po udanym Euro 2016, został zawodnikiem Interu Mediolan. Zadebiutował w meczu 6 kolejki Serie A rozegranym 11 września 2016 roku przeciwko Pescarze.
Po objęciu drużyny przez trenera Luciano Spallettiego, João Mário zaczął rzadziej pojawiać się na boisku, co zaowocowało wypożyczeniem do West Hamu w dniu 25 stycznia 2018 roku. W Anglii wystąpił w 13 spotkaniach ligowych oraz 1 pucharowym, a także zdobył jedną bramkę w lidze przeciwko Southampton F.C. Ostatecznie po zakończeniu sezonu wrócił do Interu, gdzie rozegrał cały sezon.
Pod koniec letniego okna transferowego w 2019 roku, zdecydował się na wypożyczenie do Lokomotiwu Moskwa, nie widząc szansy na grę pod wodzą nowego szkoleniowca mediolańczyków, Antonio Conte.