Born in Vila Franca de Xira, Lisbon District, Cavaleiro played youth football for five clubs, notably representing S.L. Benfica from ages 13–18, a loan spell notwithstanding. He made his senior debut in the 2012–13 season, playing his first Segunda Liga match with the reserves on 11 August 2012 against S.C. Braga B. The following weekend he scored his first goal as a professional, grabbing a brace in a 4–2 away win over C.D. Feirense, and added another two before the end of the month, in a 6–0 home routing of C.F. Os Belenenses; he finished his first year with 38 appearances and 12 goals, helping his team to the seventh position. Cavaleiro started his second season with Benfica B in fashion, netting seven times in ten matches and earning the Second Division Player of the Month award for August/September. He made his official debut for the main squad on 19 October 2013, playing the full 90 minutes against CD Cinfães in the third round in the Taça de Portugal and assistingOla John for the game's only goal; only four days later, he appeared in his maiden match in the UEFA Champions League, playing the second half of a 1–1 home draw against Olympiacos F.C. in the group stage. On 15 January 2014, Cavaleiro scored his first competitive goal for Benfica, the last in a 2–0 win against Leixões S.C. inthe campaign's Taça da Liga. On 7 August, he was loaned to Deportivo de La Coruña of the Spanish La Liga for one year, making his debut on the first matchday and opening the scoring in a 1–2 defeat at Granada CF.
On 31 August 2016, Cavaleiro moved to English Championship side Wolverhampton Wanderers on a five-year deal for an undisclosed fee, reported to be a new club-record sum of £7 million. He made his debut on 10 September in a 1–1 home draw to Burton Albion, and scored his first goal for the club 14 days later in a 3–1 win against Brentford also at Molineux Stadium. Cavaleiro was voted the Professional Footballers' Association Fans' Championship Player of the Month for November 2017, after netting four times in as many games. The previous month, he had provided five assists to keep his team clear at the top of the table; he finished the season with nine goals from 42 appearances, adding 12 decisive passes and achieving promotion to the Premier League as champion. Cavaleiro's first match in the English top division occurred on 29 September 2018, and he scored once in the 2–0 home victory over Southampton with his very first touch of the ball after coming on as a substitute in place of compatriot Diogo Jota.
Fulham
Cavaleiro signed for Fulham on 13 July 2019 on a season-long loan, with the option to make the move permanent at the end of the season. On 21 August, he put on a player of the match performance in the 4–0 home win against Milwall, scoring twice and providing one assist. On 7 January 2020, Cavaleiro agreed to a permanent four-and-a-half-year contract.