Born in Almada to a Brazilian father,[2] Rocha represented nine different clubs during his youth career, and finished his formation with AS Monaco FC. He made his senior debut with the B-team on 26 November 2016, playing the last 11 minutes in a 2–1 loss against US Colomiers for the CFA championship.
Rocha terminated his contract with Monaco on 30 January 2017, and joined Serie B side Vicenza Calcio on 1 February.[3] He did not play for the club during his six-month spell, and subsequently moved to Spain with CD Leganés, being assigned to the reserves in Tercera División.[4]
Rocha scored his first senior goal on 1 October 2017, scoring his team's third in a 3–1 home defeat of CDF Tres Cantos. The following 31 January, after three goals in ten matches, he was loaned to Segunda División B side Ontinyent CF until June.[5]
Rocha scored his first professional goal on 17 August 2018, netting a last-minute winner in a 2–1 away success over KV Mechelen. On 6 October, he scored a hat-trick in a 3–1 home win against K.S.V. Roeselare.[8] He finished the campaign with 16 goals, being the division's top goalscorer as his side narrowly avoided relegation.
Remaining in Belgium, Rocha signed a three-year contract with First Division A side KAS Eupen on 23 July 2019. The fee was €500,000.[9] In 2020–21, he was loaned back to the second tier at RWDM47 where he was the club's top scorer.[10] On 10 October 2020, he scored a hat-trick for the Molenbeek-based club in an 8–1 victory at Union Rochefortoise in the fifth round of the national cup.[11]
On 16 August 2022, Rocha signed a two-year contract with Lierse.[12]
On 13 January 2023, Rocha joined Polish Ekstraklasa side Radomiak Radom until June 2026, becoming their record signing for a reported fee of approximately €150,000.[13]
On 10 January 2023, he was transferred to Ekstraklasa side Raków Częstochowa on a three-and-a-half year long deal for a reported fee of approximately €750,000. His contract has also a clause of prolongation until 30 June 2029.[14][15]