Benfica
Cancelo s-a născut în Barreiro, un oraș din districtul Setúbal. S-a alăturat academiei de tineret a SL Benfica în 2007.
A debutat pentru Benfica pe 28 iulie 2012. Meciul a fost un meci amical împotriva lui Gil Vicente. În ciuda faptului că a fost înscris în echipa de rezerve, s-a vorbit despre el ca despre un posibil înlocuitor al lui Maxi Pereira. A debutat la profesioniști pe 25 ianuarie 2014. Meciul a fost un meci din runda a 3-a din Taça da Liga împotriva lui Gil Vicente, în care a intrat ca înlocuitor al lui André Almeida în minutul 82. Singurul său meci de campionat pentru Benfica a fost o înfrângere cu 2-1 împotriva FC Porto.
Valencia
Cancelo s-a alăturat Valenciei la 20 august 2014, sub formă de împrumut pe un an, cu opțiune de cumpărare pentru 15 milioane de euro. El a debutat în La Liga pe 25 septembrie 2014, în victoria cu 3-0 împotriva Cordobei. A fost desemnat omul meciului la 12 aprilie 2015, după o victorie cu 3-0 împotriva lui Levante. În sezonul 2014-15 a jucat doar 13 meciuri, deoarece a fost în principal rezerva lui Antonio Barragán. La 25 mai, Cancelo a acceptat un contract permanent cu Valencia până la 30 iunie 2021. Taxa de transfer a fost de 15 milioane de euro.
La 16 septembrie 2015, Cancelo a debutat în UEFA Champions League. Meciul a fost o înfrângere cu 3-2 împotriva lui Zenit Sankt Petersburg, în care a marcat 1 gol. Golul l-a făcut al 5-lea cel mai tânăr marcator din Liga Campionilor, în vârstă de 21 de ani și 107 zile. Pe 20 aprilie 2016, avea să marcheze primul său gol în campionat pentru Valenica. Meciul a fost o victorie cu 4-0 împotriva lui Eibar.
Împrumut la Inter Milano
La 22 august 2017, Cancelo s-a alăturat echipei Inter Milano sub formă de împrumut pe un an, până la 30 iunie 2018, cu opțiune de permanentizare a transferului. În cadrul acestei tranzacții, Geoffrey Kondogbia s-a alăturat, de asemenea, echipei Valencia sub formă de împrumut. El a debutat în Serie A la 26 august 2017, în victoria cu 3-1 împotriva AS Roma. Avea să sufere o accidentare la ligamentele genunchiului la sfârșitul lunii august 2017, în timp ce se afla în misiune internațională. Primul său meci de revenire după accidentare a fost o victorie cu 3-2 pe 15 octombrie 2018 împotriva lui AC Milan. a fost membru al echipei anului 2017-18 din Serie A După sezon, Inter Milano a decis să nu facă împrumutul permanent.
Juventus
La 27 iunie 2018, Juventus a semnat cu João Cancelo un contract pe 5 ani pentru 40,4 milioane de euro. El a debutat la Juventus pe 18 august, într-o victorie cu 3-2 împotriva ChievoVerona. A câștigat primul său trofeu cu Juventus pe 16 ianuarie 2019, când Juventus a învins AC Milan cu 1-0 în Supercoppa Italiana 2018. Avea să joace în meciul pentru câștigarea Scudetto, în care Juventus s-a impus cu 2-1 în fața Fiorentinei.
Manchester City
La 7 august 2019, Cancelo s-a alăturat campioanei Angliei din Premier League, Manchester City. Contractul a fost încheiat pe șase ani, în valoare de 27,4 milioane de lire sterline, iar Danilo s-a alăturat lui Juventus ca parte a înțelegerii, echivalând cu 60 de milioane de lire sterline. Acest lucru l-a făcut pe João Cancelo cel mai scump fundaș dreapta din toate timpurile. El a debutat în Premier League pe 25 august 2019, în victoria cu 3-1 împotriva lui Bournemouth, unde a intrat în locul lui Kyle Walker. A marcat primul său gol pentru Manchester City la 18 decembrie 2019, în victoria cu 3-1 împotriva lui Oxford United în sferturile de finală ale Cupei EFL.
A debutat pentru prima dată în sezonul 2020-21 pe 17 octombrie 2020, din cauza unei accidentări.Meciul a fost o victorie cu 1-0 împotriva lui Arsenal. La 3 noiembrie 2020, Cancelo a marcat primul său gol în Liga Campionilor pentru Manchester City, într-o victorie cu 3-0 împotriva echipei grecești Olympiacos. Primul său gol în campionat a avut loc pe 26 ianuarie 2021. În acel meci, Cancelo a marcat al 2-lea gol într-o victorie cu 5-0 împotriva lui West Bromwich Albion. El a fost numit în echipa anului 2020-21 a PFA.
Pe 17 octombrie 2021, Cancelo a marcat primul său gol al sezonului pentru Manchester City. Golul a fost marcat în victoria cu 6-3 împotriva lui RB Leipzig în faza grupelor UEFA Champions League. Pe 3 noiembrie, Cancelo a oferit o triplă de pase de gol în victoria cu 4-1 împotriva Club Brugge în faza grupelor Ligii Campionilor.