Esteves was born in
Arcos de Valdevez,
Viana do Castelo District. He was part of the
FC Porto squad that won the
2018–19 UEFA Youth League, defeating
Chelsea 3–1 in the final in
Nyon, Switzerland. With a contract lasting until 2021, he attracted interest from
Manchester City who offered €10 million for his signature, and rejected a transfer to
FC Barcelona in August 2019. Ahead of the 2019–20 season, Esteves was given the number 2 shirt for the first team, inherited from the released
Maxi Pereira. He made his senior debut on 18 August 2019 for
FC Porto B, starting and playing 80 minutes in a 1–1 home draw against
Varzim S.C. on the second week of the season. Esteves had his initial call-up to a first-team matchday squad for the
Taça da Liga opening group match against
C.D. Santa Clara on 25 September 2019, remaining unused in the 1–0 home win. On 5 December he made his debut in the same competition, playing the last 15 minutes of a 3–0 win at
Casa Pia A.C. in place of
Wilson Manafá. He made his
Primeira Liga bow on 16 June 2020, playing the first hour of a goalless draw at bottom club
C.D. Aves before being substituted for
Moussa Marega. On 5 October 2020, Esteves was loaned to
EFL Championship club
Reading for the season. He made his debut fifteen days later in a 1–0 home win over
Wycombe Wanderers, as a 57th-minute substitute for
Tom Holmes. He scored his only goal for the Royals in a 2–2 draw with
Swansea City on 25 April 2021. He made his debut 11 days later, starting as the season began with a 4–3 loss at
A.S. Cittadella. On 3 August 2023, Pisa announced the permanent signing of Esteves on a three-year contract, acquiring 70% of the player's economic rights for a reported €1 million fee. On 25 January 2026, Esteves moved on loan to
Bari in
Serie B. ==International career==