He started his career with Porto, where he made 76 competitive appearances and scored ten goals, winning two Primeira Liga and the 2021–22 Taça de Portugal.
Born in Santa Maria da Feira, Aveiro District,[3] Vieira played nine matches as Porto's juniors won the 2018–19 UEFA Youth League, and scored to open their 3–1 win against Chelsea in the final in Nyon on 29 April.
[11] On 27 October 2020, in only his second appearance in the UEFA Champions League, Vieira netted in the 2–0 win against Olympiacos in the group stage after starting at the Estádio do Dragão.
[22] Having arrived injured,[23] he made his league debut on 4 September, replacing Albert Sambi Lokonga in the 74th minute of the 3–1 loss at Manchester United.
[26] On 6 August 2023, Vieira scored the decisive penalty in the shoot-out as Arsenal beat Manchester City in the FA Community Shield following a 1–1 draw at Wembley Stadium.
[27] On 11 November, he was sent off with a straight red card following a dangerous challenge on Burnley's Josh Brownhill in a 3–1 home victory where he featured 24 minutes from the bench,[28] then endured a lengthy spell on the sidelines due to a groin injury.