Silva was born in Baguim do Monte, a local parish in Gondomar, and started playing football with Porto-based S.C. Salgueiros. He had a brief spell with neighbouring Boavista FC, but quickly returned to his previous club, now renamed Salgueiros 08.
Andre Silva finished his formation with FC Porto, having signed with the juniors in 2011 at the age of 15. 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 S.C. Beira-Mar in the Segunda Liga championship.
Silva finished his second season with 34 games and seven goals, helping Porto B to the 13th position in the second level. Highlights included a brace on 4 January 2015, for a 3–0 home success over Vitória de Guimarães B.
Andre 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 C.S. Marítimo in the Taça da Liga. His maiden appearance in the Primeira Liga occurred four days later, as he replaced Vincent Aboubakar for the last 20 minutes in a 0–2 defeat at Sporting Clube de Portugal.
Silva started the 2015–16 campaign as fourth-choice striker behind Aboubakar and Dani Osvaldo, and his plight worsened in January 2016 with the acquisition of Suk Hyun-jun and Moussa Marega. However, after José Peseiro replaced Julen Lopetegui as manager, he received more opportunities, and scored his first league goal in a 4–0 home win over Boavista, in the last match. He also started in the final of the Taça de Portugal on 22 May, helping his team recover from a 0–2 deficit against S.C. Braga with a brace, which included a bicycle kick in the last-minute (eventual 2–4 loss on penalties).
Silva began 2016–17 in good form, with goals in his first two league games against Rio Ave F.C. and G.D. Estoril Praia, while also scoring in Porto’s 1–1 draw at home to A.S. Roma in the UEFA Champions League play-off round. On 21 August 2016 he signed a new five-year contract, which included a release clause of €60 million.
On 11 August, Silva joined Spanish club Sevilla FC on a season-long loan with the option to purchase for €35 million. He made his debut the following day, coming on for Luis Muriel at the hour mark of an eventual 1–2 loss against FC Barcelona for the Supercopa de España. He netted three times in his first La Liga match, a 4–1 victory at Rayo Vallecano, adding a brace in a 3–0 home defeat of Real Madrid on 26 September.