João Afonso
Career snapshot
Career highs
Born the same day
Shares 1990-05-28 · 6 players total
| Full name | João Afonso |
|---|---|
| Name in home country | João Ricardo da Silva Afonso |
| Date of birth | 1990-05-28 (35 yrs) |
| Place of birth | Castelo Branco, Portugal |
| Citizenship | Portugal |
| Position | Defender - Centre-Back (main: Defender) |
| Foot | right |
| Height | 188.00 m |
| Current club | CD Tondela |
| Joined | 2024-07-16 |
| Contract expires | 2026-06-30 |
| Agent | FutBiz |
| Club | Seasons | First | Last | Matches | Goals | Assists | Minutes |
|---|---|---|---|---|---|---|---|
| CD Tondela | 2 | 24/25 | 25/26 | 36 | 0 | 3 | 0 |
| SC União Torreense | 2 | 22/23 | 23/24 | 66 | 4 | 3 | 2,638 |
| CD Santa Clara | 4 | 19/20 | 22/23 | 91 | 4 | 3 | 1,813 |
| Vitória Guimarães SC | 4 | 14/15 | 18/19 | 68 | 3 | 6 | 2,721 |
| Córdoba CF | 1 | 17/18 | 17/18 | 22 | 0 | 0 | 0 |
| GD Estoril Praia | 1 | 16/17 | 16/17 | 33 | 0 | 1 | 0 |
| Vitória Guimarães SC B | 2 | 15/16 | 16/17 | 6 | 0 | 0 | 0 |
| Benfica Castelo Branco | 2 | 11/12 | 13/14 | 2 | 0 | 0 | 0 |
Career trajectory — goals, assists & market value
Goals by season
Assists by season
| Season | Competition | Club | Matches | Goals | Assists | YC | RC | Minutes |
|---|---|---|---|---|---|---|---|---|
| 25/26 | Liga Portugal | CD Tondela | 3 | 0 | 0 | 1 | 0 | 0 |
| 24/25 | Liga Portugal 2 | CD Tondela | 33 | 0 | 3 | 6 | 0 | 0 |
| 23/24 | Allianz Cup | SC União Torreense | 2 | 0 | 0 | 0 | 0 | 0 |
| 23/24 | Liga Portugal 2 | SC União Torreense | 33 | 2 | 2 | 3 | 0 | 1,438 |
| 23/24 | Taça de Portugal | SC União Torreense | 1 | 0 | 0 | 0 | 0 | 0 |
| 22/23 | Allianz Cup | SC União Torreense | 1 | 0 | 0 | 0 | 0 | 0 |
| 22/23 | Liga Portugal | CD Santa Clara | 0 | 0 | 0 | 0 | 0 | 0 |
| 22/23 | Liga Portugal 2 | SC União Torreense | 29 | 2 | 1 | 5 | 1 | 1,200 |
| 21/22 | Allianz Cup | CD Santa Clara | 2 | 0 | 0 | 1 | 0 | 0 |
| 21/22 | Liga Portugal | CD Santa Clara | 15 | 0 | 0 | 0 | 0 | 0 |
| 21/22 | Taça de Portugal | CD Santa Clara | 2 | 0 | 0 | 0 | 0 | 0 |
| 21/22 | UECL Quali | CD Santa Clara | 6 | 0 | 0 | 1 | 0 | 0 |
| 20/21 | Liga NOS | CD Santa Clara | 25 | 0 | 0 | 2 | 0 | 0 |
| 20/21 | Taça de Portugal | CD Santa Clara | 3 | 0 | 0 | 0 | 0 | 0 |
| 19/20 | Allianz Cup | CD Santa Clara | 3 | 1 | 0 | 0 | 0 | 270 |
| 19/20 | Liga NOS | CD Santa Clara | 33 | 2 | 2 | 1 | 0 | 1,434 |
| 19/20 | Taça de Portugal | CD Santa Clara | 2 | 1 | 1 | 0 | 0 | 109 |
| 18/19 | Allianz Cup | Vitória Guimarães SC | 0 | 0 | 0 | 0 | 0 | 0 |
| 18/19 | Liga NOS | Vitória Guimarães SC | 5 | 0 | 1 | 0 | 0 | 0 |
| 18/19 | Taça de Portugal | Vitória Guimarães SC | 1 | 1 | 0 | 0 | 0 | 90 |
| 17/18 | 2ª División | Córdoba CF | 21 | 0 | 0 | 6 | 0 | 0 |
| 17/18 | Copa del Rey | Córdoba CF | 1 | 0 | 0 | 0 | 0 | 0 |
| 17/18 | Liga NOS | Vitória Guimarães SC | 8 | 1 | 0 | 2 | 0 | 631 |
| 16/17 | Allianz Cup | GD Estoril Praia | 1 | 0 | 0 | 0 | 0 | 0 |
| 16/17 | Ledman LigaPro | Vitória Guimarães SC B | 3 | 0 | 0 | 0 | 0 | 0 |
| 16/17 | Liga NOS | GD Estoril Praia | 27 | 0 | 1 | 5 | 0 | 0 |
| 16/17 | Taça de Portugal | GD Estoril Praia | 5 | 0 | 0 | 1 | 0 | 0 |
| 15/16 | Allianz Cup | Vitória Guimarães SC | 0 | 0 | 0 | 0 | 0 | 0 |
| 15/16 | Europa League Qualifying | Vitória Guimarães SC | 2 | 0 | 0 | 1 | 0 | 0 |
| 15/16 | Ledman LigaPro | Vitória Guimarães SC B | 3 | 0 | 0 | 0 | 0 | 0 |
| 15/16 | Liga NOS | Vitória Guimarães SC | 24 | 0 | 2 | 3 | 0 | 0 |
| 15/16 | Taça de Portugal | Vitória Guimarães SC | 1 | 0 | 0 | 0 | 0 | 0 |
| 14/15 | Allianz Cup | Vitória Guimarães SC | 2 | 0 | 0 | 1 | 0 | 0 |
| 14/15 | Liga NOS | Vitória Guimarães SC | 23 | 1 | 3 | 6 | 0 | 2,000 |
| 14/15 | Taça de Portugal | Vitória Guimarães SC | 2 | 0 | 0 | 0 | 0 | 0 |
| 13/14 | Taça de Portugal | Benfica Castelo Branco | 1 | 0 | 0 | 0 | 0 | 0 |
| 11/12 | Taça de Portugal | Benfica Castelo Branco | 1 | 0 | 0 | 0 | 0 | 0 |
| Season | Date | From | To | Type | Market value | Fee |
|---|---|---|---|---|---|---|
| 09/10 | 2009-07-01 | C. Branco U19 | BC Branco | Transfer | 0 | — |
| 14/15 | 2014-07-01 | BC Branco | Vit. Guimarães | Transfer | 0 | — |
| 16/17 | 2016-08-31 | Vit. Guimarães | Estoril | Loan | 1500000 | — |
| 16/17 | 2017-06-30 | Estoril | Vit. Guimarães | Return from loan | 1500000 | — |
| 17/18 | 2017-07-09 | Vit. Guimarães | Córdoba CF | Loan | 1500000 | — |
| 17/18 | 2018-01-30 | Córdoba CF | Vit. Guimarães | Return from loan | 1000000 | — |
| 19/20 | 2019-07-01 | Vit. Guimarães | Santa Clara | Transfer | 700000 | — |
| 22/23 | 2022-08-31 | Santa Clara | Torreense | Transfer | 300000 | — |
| 24/25 | 2024-07-16 | Torreense | Tondela | Transfer | 100000 | — |
| Season | Injury | From | To | Days missed | Games missed |
|---|---|---|---|---|---|
| 14/15 | Cruciate ligament strain | 2015-02-27 | 2015-05-09 | 72 | 9 |
| 18/19 | Ankle injury | 2019-01-21 | 2019-02-26 | 37 | 5 |
| Date | Value |
|---|---|
| Jan 1, 1970 | €75k |
| Jan 1, 1970 | €100k |
| Jan 1, 1970 | €100k |
| Jan 1, 1970 | €100k |
| Jan 1, 1970 | €100k |
| Jan 1, 1970 | €300k |
| Jan 1, 1970 | €125k |
| Jan 1, 1970 | €800k |
| Jan 1, 1970 | €450k |
| Jan 1, 1970 | €500k |
| Jan 1, 1970 | €800k |
| Jan 1, 1970 | €1.00m |
| Jan 1, 1970 | €700k |
| Jan 1, 1970 | €850k |
| Jan 1, 1970 | €800k |
| Jan 1, 1970 | €1.00m |
| Jan 1, 1970 | €1.00m |
| Jan 1, 1970 | €1.00m |
| Jan 1, 1970 | €1.50m |
| Jan 1, 1970 | €1.50m |
| Jan 1, 1970 | €2.00m |
| Jan 1, 1970 | €1.50m |
| Jan 1, 1970 | €1.50m |
| Jan 1, 1970 | €2.20m |
| Jan 1, 1970 | €100k |
No national team data.
| Teammate | PPG played with | Joint goals | Minutes |
|---|---|---|---|
| Neneco | 1 | 0 | 0 |
| Mansur | 1 | 0 | 0 |
| Bruno Gaspar | 2 | 0 | 0 |
| Keffel | 1 | 0 | 0 |
| Cryzan | 1 | 0 | 0 |
| Tomané | 1 | 0 | 0 |
| Osama Rashid | 1 | 1 | 0 |
| Thiago Santana | 1 | 0 | 0 |
| Nuno Campos | 1 | 0 | 0 |
| Cafú | 1 | 0 | 0 |
| Patrick | 1 | 1 | 0 |
| Costinha | 2 | 1 | 0 |
| Fábio Cardoso | 2 | 2 | 0 |
| Balanta Jr. | 1 | 0 | 0 |
| Anderson Carvalho | 2 | 0 | 0 |
| Rafael Ramos | 2 | 0 | 0 |
| Nené | 1 | 0 | 0 |
| Vagner | 1 | 0 | 0 |
| Carlos Júnior | 2 | 1 | 0 |
| Lincoln | 1 | 1 | 0 |
Single-season peaks across competitions in this player's career.
Top goalscoring seasons
| Season | Competition | Club | Goals | Matches |
|---|---|---|---|---|
| 19/20 | Liga NOS | CD Santa Clara | 2 | 33 |
| 22/23 | Liga Portugal 2 | SC União Torreense | 2 | 29 |
| 23/24 | Liga Portugal 2 | SC União Torreense | 2 | 33 |
Top assist seasons
| Season | Competition | Club | Assists | Matches |
|---|---|---|---|---|
| 24/25 | Liga Portugal 2 | CD Tondela | 3 | 33 |
| 14/15 | Liga NOS | Vitória Guimarães SC | 3 | 23 |
| 15/16 | Liga NOS | Vitória Guimarães SC | 2 | 24 |
Every loan spell across this player's career.
| Season | Date | From | To | Type | Fee | Value at transfer |
|---|---|---|---|---|---|---|
| 17/18 | 2018-01-30 | Córdoba CF | Vit. Guimarães | Return from loan | — | €1.00m |
| 17/18 | 2017-07-09 | Vit. Guimarães | Córdoba CF | Loan | — | €1.50m |
| 16/17 | 2017-06-30 | Estoril | Vit. Guimarães | Return from loan | — | €1.50m |
| 16/17 | 2016-08-31 | Vit. Guimarães | Estoril | Loan | — | €1.50m |
Last 50 matches for CD Tondela The Availability column cross-references our injury database — matches inside a known injury window are flagged INJURED. Per-match goal attribution requires a paid feed (FBref/Sofascore) and isn't wired up yet.
| Date | Comp | Home | Score | Away | Availability |
|---|---|---|---|---|---|
| 2026-05-16 | PO1 |
FC Arouca | 3–1 | CD Tondela | Available |
| 2026-05-11 | PO1 |
CD Tondela | 2–0 | Moreirense FC | Available |
| 2026-05-11 | PO1 |
CD Tondela | 2–0 | Moreirense FC | Available |
| 2026-05-03 | PO1 |
Casa Pia AC | 0–1 | CD Tondela | Available |
| 2026-05-03 | PO1 |
Casa Pia AC | 0–1 | CD Tondela | Available |
| 2026-04-29 | PO1 |
Sporting Clube de Portugal | 2–2 | CD Tondela | Available |
| 2026-04-29 | PO1 |
Sporting Clube de Portugal | 2–2 | CD Tondela | Available |
| 2026-04-25 | PO1 |
CD Tondela | 0–2 | CD Nacional | Available |
| 2026-04-25 | PO1 |
CD Tondela | 0–2 | CD Nacional | Available |
| 2026-04-19 | PO1 |
FC Porto | 2–0 | CD Tondela | Available |
| 2026-04-19 | PO1 |
FC Porto | 2–0 | CD Tondela | Available |
| 2026-04-13 | PO1 |
CD Tondela | 2–2 | Gil Vicente FC | Available |
| 2026-04-03 | PO1 |
Vitória Guimarães | 5–0 | CD Tondela | Available |
| 2026-03-21 | PO1 |
CD Tondela | 0–0 | AVS | Available |
| 2026-03-09 | PO1 |
CD Tondela | 0–1 | Rio Ave FC | Available |
| 2026-03-01 | PO1 |
CD Tondela | 2–2 | CD Santa Clara | Available |
| 2026-02-20 | PO1 |
CF Estrela da Amadora | 0–2 | CD Tondela | Available |
| 2026-02-13 | PO1 |
CD Tondela | 1–1 | FC Alverca | Available |
| 2026-02-07 | PO1 |
GD Estoril Praia | 2–2 | CD Tondela | Available |
| 2026-02-01 | PO1 |
CD Tondela | 0–0 | Sport Lisboa e Benfica | Available |
| 2026-01-25 | PO1 |
FC Famalicão | 3–0 | CD Tondela | Available |
| 2026-01-18 | PO1 |
CD Tondela | 0–1 | Sporting Clube de Braga | Available |
| 2026-01-11 | PO1 |
Moreirense FC | 1–0 | CD Tondela | Available |
| 2026-01-03 | PO1 |
CD Tondela | 3–1 | FC Arouca | Available |
| 2025-12-21 | PO1 |
CD Tondela | 1–2 | Casa Pia AC | Available |
| 2025-12-15 | PO1 |
CD Nacional | 3–1 | CD Tondela | Available |
| 2025-12-07 | PO1 |
CD Tondela | 0–2 | FC Porto | Available |
| 2025-11-29 | PO1 |
Gil Vicente FC | 0–1 | CD Tondela | Available |
| 2025-11-08 | PO1 |
CD Tondela | 0–1 | Vitória Guimarães | Available |
| 2025-11-02 | PO1 |
AVS | 2–2 | CD Tondela | Available |
| 2025-10-26 | PO1 |
CD Tondela | 0–3 | Sporting Clube de Portugal | Available |
| 2025-10-05 | PO1 |
Rio Ave FC | 3–0 | CD Tondela | Available |
| 2025-09-27 | PO1 |
CD Santa Clara | 1–2 | CD Tondela | Available |
| 2025-09-21 | PO1 |
CD Tondela | 0–0 | CF Estrela da Amadora | Available |
| 2025-09-12 | PO1 |
FC Alverca | 1–0 | CD Tondela | Available |
| 2025-08-31 | PO1 |
CD Tondela | 2–2 | GD Estoril Praia | Available |
| 2025-08-23 | PO1 |
Sport Lisboa e Benfica | 3–0 | CD Tondela | Available |
| 2025-08-16 | PO1 |
CD Tondela | 0–1 | FC Famalicão | Available |
| 2025-08-10 | PO1 |
Sporting Clube de Braga | 3–0 | CD Tondela | Available |
| 2025-05-17 | PO2 |
União Leiria | – | CD Tondela | TIMED |
| 2025-05-11 | PO2 |
CD Tondela | – | FC Alverca | TIMED |
| 2025-05-04 | PO2 |
CD Tondela | – | GD Chaves | TIMED |
| 2025-04-27 | PO2 |
Portimonense SC | – | CD Tondela | TIMED |
| 2025-04-19 | PO2 |
CD Tondela | – | FC Vizela | TIMED |
| 2025-04-13 | PO2 |
Paços de Ferreira | – | CD Tondela | TIMED |
| 2025-04-05 | PO2 |
CD Tondela | – | CD Feirense | TIMED |
| 2025-03-29 | PO2 |
UD Oliveirense | – | CD Tondela | TIMED |
| 2025-03-16 | PO2 |
CD Tondela | 2–1 | SL Benfica B | Available |
| 2025-03-10 | PO2 |
Leixões SC | 0–1 | CD Tondela | Available |
| 2025-03-01 | PO2 |
CD Tondela | 2–2 | União Torreense | Available |
Teams faced most often by João Afonso's clubs during seasons he played in those competitions (team-level results, not personal head-to-head goals — see disclaimer above).
| Opponent | P | W | D | L | GF | GA | GD | Win % |
|---|---|---|---|---|---|---|---|---|
| CS Marítimo | 8 | 2 | 2 | 4 | 7 | 10 | -3 | 25% |
| Vitória Guimarães | 6 | 1 | 1 | 4 | 4 | 9 | -5 | 17% |
| Boavista | 6 | 1 | 1 | 4 | 8 | 10 | -2 | 17% |
| CD Tondela | 6 | 4 | 1 | 1 | 9 | 5 | +4 | 67% |
| Portimonense SC | 6 | 2 | 4 | 0 | 7 | 5 | +2 | 33% |
| Sporting Braga | 6 | 1 | 1 | 4 | 9 | 17 | -8 | 17% |
| Rio Ave FC | 6 | 1 | 1 | 4 | 5 | 10 | -5 | 17% |
| Paços de Ferreira | 6 | 3 | 1 | 2 | 6 | 4 | +2 | 50% |
| SL Benfica | 6 | 1 | 0 | 5 | 6 | 17 | -11 | 17% |
| Sporting CP | 6 | 0 | 0 | 6 | 2 | 13 | -11 | 0% |
| FC Porto | 6 | 0 | 1 | 5 | 3 | 10 | -7 | 0% |
| Moreirense FC | 4 | 2 | 1 | 1 | 5 | 3 | +2 | 50% |
Auto-detected milestones based on cumulative career totals.
| Season / Year | Milestone | Date |
|---|---|---|
| 11/12 | Senior debut season | |
| 14/15 | First senior goal |
Yellow / second-yellow / red cards per season. Only seasons with at least one card are shown.
| Season | Matches | Mins | YC | 2nd YC | RC | Cards / 90′ |
|---|---|---|---|---|---|---|
| 25/26 | 3 | 0 | 1 | 0 | 0 | 0 |
| 24/25 | 33 | 0 | 6 | 0 | 0 | 0 |
| 23/24 | 36 | 1,438 | 3 | 0 | 0 | 0.19 |
| 22/23 | 30 | 1,200 | 5 | 0 | 1 | 0.45 |
| 21/22 | 25 | 0 | 2 | 0 | 0 | 0 |
| 20/21 | 28 | 0 | 2 | 0 | 0 | 0 |
| 19/20 | 38 | 1,813 | 1 | 0 | 0 | 0.05 |
| 17/18 | 30 | 631 | 8 | 0 | 0 | 1.14 |
| 16/17 | 36 | 0 | 6 | 0 | 0 | 0 |
| 15/16 | 30 | 0 | 4 | 1 | 0 | 0 |
| 14/15 | 27 | 2,000 | 7 | 0 | 0 | 0.32 |
Output by competition
Career goals and assists broken down by tournament.
More on João Afonso
Explore this player's career through different angles.
Similar players
Same position, similar age, sorted by market value.
Frequently asked about João Afonso
Who is João Afonso?
João Afonso is a Portugal professional footballer who plays as a centre-back for CD Tondela.
How old is João Afonso?
João Afonso is 35 years old. He was born on May 28, 1990 in Castelo Branco.
What position does João Afonso play?
João Afonso plays as a centre-back (Defender - Centre-Back).
What club does João Afonso play for?
João Afonso currently plays for CD Tondela.
How many career goals has João Afonso scored?
Across all senior club competitions in our dataset, João Afonso has scored 11 goals in 324 appearances.
What is João Afonso's market value?
João Afonso's most recent reported market value is €75k.
Portugal