*Club domestic league appearances and goals, correct as of 23:01, 20 December 2024 (UTC) ‡ National team caps and goals, correct as of 16:55, 2 December 2022 (UTC)
An academy graduate of Porto, he impressed during his time with the reserve side before making his debut with the first team in 2015. He ultimately made 58 appearances for the club, scoring 24 goals before joining AC Milan in 2017. He went on to represent Sevilla and Eintracht Frankfurt on loan, signing a permanent contract with the latter in 2020. Following a club record-breaking campaign, in which he scored 28 times, he moved to RB Leipzig also in the Bundesliga for a reported fee of €23 million.
Silva was born in Baguim do Monte, a local parish in Gondomar, and started playing football with Porto-based Salgueiros after switching from swimming. He had a brief spell with neighbouring Boavista, but quickly returned to his previous club.[3]
Silva finished his youth career with Porto, having signed with the juniors in 2011 at the age of 15.[4] On 12 August 2013, he made his professional debut, coming on as a 77th-minute substitute for Tozé as the B team won 3–2 away against Beira-Mar in the Segunda Liga.[5]
Silva finished his second season with 34 games and seven goals, helping Porto B to the 13th position in the second tier. Highlights included a brace on 4 January 2015, for a 3–0 home victory over Vitória de Guimarães B.[6]
First team
Silva made his competitive debut for the first team on 29 December 2015, playing the full 90 minutes in a 1–3 home loss against Marítimo in the Taça da Liga.[7] His maiden appearance in the Primeira Liga occurred four days later, as he replaced Vincent Aboubakar for the last 20 minutes of the 2–0 defeat at Sporting CP.[8]
Silva began 2016–17 in good form, with goals in his first two league games against Rio Ave and Estoril, while also scoring in Porto's 1–1 draw at home to Roma in the UEFA Champions Leagueplay-off round. On 21 August 2016 he signed a new five-year contract, which included a release clause of €60 million.[13]
Milan
On 12 June 2017, Silva moved to AC Milan on a five-year contract for a fee of €38 million[14][15] with the additional €2 million depending on objectives. Upon signing, he told the press: "I'm very happy to have joined such a prestigious club with such a great history."[16] He was given the number 9 shirt, previously worn by Gianluca Lapadula.[17]
Silva made his debut for the Italian club on 27 July, playing 24 minutes in the 1–0 win against Universitatea Craiova in the third qualifying round of the UEFA Europa League.[18] On 17 August, for the same competition but in the play-off round, he contributed two goals and one assist to a 6–0 home rout of Shkëndija.[19] On 14 September, already in the group stage, he scored a hat-trick to help the visitors defeat Austria Wien 5–1;[20] in the process, he became the first player to achieve the feat for Milan in Europe since Kaká in 2006,[21] and he was included in UEFA's Europa League Team of the Week due to his performance.[22] He scored his maiden goal in the Serie A on 11 March 2018, from a last-minute header in the 1–0 away win over Genoa.[23]
On 11 August 2018, Silva joined Spanish club Sevilla on a season-long loan with the option to purchase for €35 million.[24] He made his debut the following day, coming on for Luis Muriel at the hour mark of an eventual 2–1 loss against Barcelona in the Supercopa de España.[25] He scored a hat-trick in his first La Liga match on 19 August in a 4–1 victory at Rayo Vallecano, equalling the feat of Romário who achieved this in 1993,[26] and also scored a brace in a 3–0 home defeat of Real Madrid on 26 September.[27]
On 25 November 2018, Silva scored the only goal in a win over Real Valladolid as Sevilla temporarily led the table.[28] His performances declined over the course of the campaign, leading the Andalusians to not sign him on a permanent basis.[29][30]
Eintracht Frankfurt
On 2 September 2019, Silva moved to Eintracht Frankfurt on a two-year loan deal, with Ante Rebić heading in the opposite direction.[31] He made his Bundesliga debut 12 days later, playing the entire 2–1 defeat at Augsburg and partnering compatriot and former Porto teammate Gonçalo Paciência up front.[32] He scored his first goal in the competition on 22 September, netting the first in a 2–2 home draw against Borussia Dortmund.[33]
With the restart of the German league following the COVID-19 pandemic, Silva scored eight goals in ten games for a total of 12 in the campaign.[34] This surpassed by one goal the record for top-scoring Portuguese in a German top-flight season, by Werder Bremen's Hugo Almeida.[35]
On 10 September 2020, Silva signed a permanent three-year contract.[36] He was Player of the Month for the following January, with seven goals from six games including three braces.[37] With 28 goals, he bettered Bernd Hölzenbein's 44-year-old club record for goals in a top-flight campaign by one;[38] only Bayern Munich's Robert Lewandowski scored more over the season.[39]
On 2 August 2023, Silva moved to Spanish top-tier club Real Sociedad on a season-long loan with an option to buy.[47] He made his debut on 30 September, as a 60th-minute substitute in the 3–0 home win over Athletic Bilbao.[48]
Silva was called up for the first time to the senior team by head coach Fernando Santos on 26 August 2016,[54] playing the second half of a 5–0 friendly victory over Gibraltar in Porto on 1 September.[55] He scored his first goal with Portugal's main squad on 7 October, featuring the entire 6–0 defeat of Andorra for the 2018 FIFA World Cupqualifiers.[55] Three days later, for the same competition, he netted three times in the first half of an eventual 6–0 thrashing of the Faroe Islands.[56]
In May 2018, Silva was named in Portugal's final squad for the FIFA World Cup, also to be held in Russia.[61] Late into that month, he scored the 1000th goal in the national team's history during the first half of a friendly with Tunisia in Braga.[62] He made his debut in the competition on 15 June, replacing Gonçalo Guedes in the 80th minute of the 3–3 group stage draw against Spain.[63]
Silva was selected for the delayed UEFA Euro 2020 tournament on 20 May 2021,[64][65] replacing Diogo Jota in the 70th minute of a 1–0 loss to Belgium in the round of 16.[66] In November 2022, he made the final squad for the World Cup in Qatar.[67] His only appearance in an eventual quarter-final exit consisted of 30 minutes of the 2–1 defeat against South Korea in the group stage.[68][69]