Porto Born in
Paços de Brandão,
Santa Maria da Feira,
Aveiro District, Oliveira arrived at
Porto's youth system in 2002, at the age of 10. On 17 October 2009, he became the club's youngest ever player to appear for the first team, at the age of 17 years, four months and 15 days, in a 4–0 home win against
Sertanense in the
third round of the
Taça de Portugal; during the game, he provided an
assist for
Hulk in one of the goals. He signed a renewed contract the following month, running until June 2012 with a
€30 million
buyout clause. Oliveira was loaned to
Beira-Mar of the
Primeira Liga for the
2010–11 campaign. He debuted in the competition on 23 October 2010, playing one minute in a 1–1 away draw with
Paços de Ferreira. In the summer of 2011, still owned by Porto, Oliveira was deemed surplus to requirements by new manager
Vítor Pereira as practically all Portuguese players, and joined
Belgian Pro League club
Mechelen. He scored his first career goals on 21 September in the
sixth round of the
national cup away to
Oostende, two in a 3–0 victory; his one goal of the
league season was a consolation in a 3–2 loss at
Standard Liège on 25 November. In the following
transfer window, in the same situation, he returned to his country and signed for
Penafiel in the
Segunda Liga.
Paços Ferreira Oliveira agreed to a three-year contract with Paços de Ferreira for
2013–14, also in the Portuguese top tier. In each of his two seasons, the first spent on loan, he scored twice in the league.
Return to Porto After having been sold back to Porto before the start of the
2015–16 campaign, Late into the 2017 January
transfer window, he was loaned to
Nantes as the French side was coached by compatriot
Sérgio Conceição, who subsequently would be his boss at Porto. Oliveira was a very important unit for the
2017–18 national champions, His importance grew even further as he spent the final stretch of the season as a starter, forming a revamped midfield partnership with
Héctor Herrera after
Danilo Pereira suffered a serious injury which ruled him out for several months. Oliveira still took the field in the
2018 edition of the
Supertaça Cândido de Oliveira, a 3–1 victory over
Aves. On 31 January 2019, having ceased to be part of Conceição's plans, he joined
PAOK on a five-month loan deal. On 18 February, he contributed to a 5–1
Super League Greece rout at
Apollon Smyrnis for his first goal. He added two more the following month in wins against
Atromitos (3–0) and
Xanthi (2–1), and eventually helped the club conquer
the double for the first time in its history. In the
2019–20 campaign, Oliveira played 34 games in all competitions and scored five times to win another double, edging
Benfica on both domestic fronts. In the
final of the Portuguese Cup, he came on as an 80th-minute
substitute for
Jesús Corona as his team (reduced to ten men since the end of the first half) held on to a 2–1 victory in
Coimbra. Oliveira achieved a career-best 20 goals in
2020–21. On 9 March 2021, he scored a brace in a 3–2 loss after
extra-time to
Juventus in the
Champions League round of 16 – an early
penalty and a 115th-minute
free kick – to qualify his team on the
away goals rule. Consequently, he was given the "Dragão de Ouro" award for Porto's footballer of the year. Subsequently, Oliveira attracted interest from clubs such as
Fiorentina,
Roma and
Tottenham Hotspur. As the summer transfer window closed, no moves materialised, and he began the
2021–22 season on
the bench, as fellow youth graduate
Bruno Costa who had just been re-signed started in his place. However, after scoring a late winner in a 2–1 league victory against Gil Vicente, he returned to the starting eleven. On 12 January 2022, Oliveira joined
Serie A club Roma, coached by his compatriot
José Mourinho; the €1 million loan deal included a €13.5 million buying option at the end of
the campaign. He scored on his debut four days later, his 33rd-minute penalty being the only goal of the home fixture with
Cagliari. He made six appearances as the
Giallorossi won the
inaugural edition of the
UEFA Europa Conference League, and scored the only goal in the
last-16 first leg away to
Vitesse in which he was also
sent off; he replaced the injured
Henrikh Mkhitaryan after a quarter of an hour in
the final on 25 May in another single-goal win over a Dutch side,
Feyenoord.
Galatasaray On 9 July 2022,
Galatasaray announced the signing of Oliveira on a four-year contract. He made his
Süper Lig debut on 7 August, starting as
the season began with a 1–0 win at
Antalyaspor. His first goal came on 16 September to open a 2–1 home victory over
Konyaspor in 59 seconds; he won the domestic league in his
first season, confirming it with two games to spare in a 4–1 away defeat of
Ankaragücü where he scored. Oliveira tore a chest muscle in training in December 2023, being sidelined for several months following surgery. On 4 September 2024, he left by mutual consent.
Later career Immediately after leaving Galatasaray, Oliveira joined Greek top-tier
Olympiacos. On 19 February 2025, he joined
Campeonato Brasileiro Série A club
Sport Recife on a deal until December 2026; he was released ten months later, however, having totalled 29 matches, two goals and two assists for the
bottom-placed side. ==International career==