Жуан начал свои выступления в детской команде «Маис Керидо» из родного города Рио-де-Жанейро. Затем он перешёл в школу клуба «Дуки-ди-Кашиас», где играл до 1996 года. В 1996 году он перешёл в клуб «Фламенго», в составе которого дебютировал в матче с Деспортива Ферровиария. Всего в первом сезоне он провёл за клуб 13 игр. Начиная с 1997 года Жуан занял место в центре обороны клуба. 24 апреля 1997 года Жуан забил первый мяч в составе «Фламенго», поразив ворота «Интернасьонала». Всего за «Фламенго» Жуан выступал 6 лет, проведя 245 матчей и забив 29 голов. Он выиграл вместе с клубом 4 чемпионата штата Рио-де-Жанейро, 3 Кубка Гуанабара, два трофея Рио, Золотой Кубок, Кубок чемпионов Бразилии и Кубок Меркосур.
В феврале 2003 года Жуан перешёл, при посредничестве Жилмара Риналди, в немецкий клуб «Байер 04», заплативший за трансфер бразильца 3,1 млн евро. В составе «Байера» Жуан провёл 5 лет, проведя 139 матчей в чемпионате Германии и забив 9 голов. Весной 2007 года Жуан выразил желание покинуть «Байер». Сам защитник хотел выступать за «Милан». В спорт за бразильца вступили «Севилья» и «Рома». Испанский клуб предложил Жуану контракт на 4 года с выплатой 2,5 млн евро за год.
21 июня 2007 года Жуан перешёл в «Рому», заплатившую 6,3 млн евро. Контракт с римским клубом был подписан на 4 года с ежегодной заработной платой в 3,1 млн евро. Жуан сказал:
В «Роме» Жуан занял место Кристиана Киву, который был продан в «Интер». 16 сентября он забил свой первый мяч за клуб, поразив ворота «Реджины». Всего в первом сезоне он провёл 32 игры, пропустив несколько месяцев из-за частых травм бедра и голеностопа.
В начале 2008 года Жуан получил рецидив травмы правого бедра, пропустив начало сезона. В феврале Жуан вновь травмировал бедро. Несмотря на это, в июне 2009 года он продлил контракт с клубом до 2013 года. В июле 2009 года начались переговоры по поводу перехода Жуана в «Фиорентину», но они сорвались.
Осенью 2009 года Жуан в очередной раз получил травму правого бедра.
В декабре 2010 года Жуан сказал, что планирует выступать за «Рому» до 2013 года. 9 января 2011 года в матче с «Сампдорией» Жуан дважды совершил грубые ошибки из-за чего его команда пропустила 2 гола и проиграла встречу со счётом 1:2.
В апреле 2012 года намерен договориться с руководством «Ромы» о досрочном расторжении контракта, чтобы вернуться на родину.
Жуан дебютировал в составе сборной Бразилии 15 июля 2001 года в матче Кубка Америки с Перу. В 2002 году он был кандидатом на поездку на чемпионат мира, но в заявку команды не попал. Он участвовал в Кубке Кофедераций 2003, где бразильцы не вышли из группы и Кубке Америки 2004 и Кубок конфедераций 2005, где бразильцы стали победителями.
В 2006 году Жуан играл на своё первом чемпионате мира, где провёл все 5 матчей своей команды, выбывшей в 1/4 финала. В 2007 году Жуан сменил Жилберто Силву на посту капитана команды на Кубке Америки, выигранной Бразилией. В 2009 году он помог своей команде победить на Кубке конфедераций, где он пропустил конец турнира из-за травмы мышц левой ноги. Принял участие в ЧМ-2010, забил на этом турнире 1 гол.