Abandoned by his parents at a young age, Bebé grew up in a homeless shelter near Lisbon. He began his football career as an amateur with Loures, before joining Estrela da Amadora in 2009. A year later, he was signed by Vitória de Guimarães but transferred almost immediately to Manchester United for a fee of about £7 million, despite manager Alex Ferguson admitting he had never seen Bebé play.
Unable to make an impression on the Manchester United first team, he spent time on loan with Turkish side Beşiktaş and back in Portugal with Rio Ave and Paços de Ferreira, before joining Benfica permanently in July 2014. After loan spells in Spain with Córdoba and Rayo Vallecano, he joined Eibar in July 2016. He returned to Rayo Vallecano in January 2018, on another loan spell. In August 2018, he joined Rayo on a permanent deal.
Bebé is the son of Cape Verdean immigrants and is the fourth player of Cape Verdean descent to join Manchester United; the others are Portuguese international winger Nani, French international left-back Patrice Evra and former Swedish international Henrik Larsson. He was given his nickname, which means 'baby' in Portuguese, by his older brother.
Bebé was abandoned as a young child by his father Francisco and his mother Deolinda. He was consequently raised by his grandmother in a suburb of Lisbon, until the age of 12, when a court placed him in the care of the church. He moved to the Casa do Gaiato shelter in Santo Antão do Tojal, 20 km outside Lisbon. During his time there, he and seven other residents of the shelter were invited to play for the CAIS team in the 2009 European Street Football Festival in the Bosnian town of Foča. Despite Bebé scoring four goals in six matches, CAIS did not progress beyond the second group stage of the tournament.
Having previously played for amateur side Loures, Bebé was signed by Segunda Divisão side Estrela da Amadora in the summer of 2009. Regarded as the club's star player, he finished the season with four goals in 26 matches. However, Estrela were beset by financial problems and offered him around Europe for £125,000 but found no takers. His former agent, Gonçalo Reis, revealed that Bebé was offered to PSV Eindhoven for free in May 2010, but PSV turned down the offer as they did not know anything about the player. As their situation worsened, they stopped paying his wages, so he broke his contract and signed for Portuguese Primeira Liga team Vitória de Guimarães in the summer of 2010, on a free transfer. His contract with Guimarães at first included a €3 million release clause, but this was increased to €9 million following his performances in pre-season games. He finished with five goals in six friendly matches.
On 11 August 2010, only five weeks after he signed for Vitória de Guimarães, Manchester United agreed an undisclosed fee with the Portuguese club for the transfer of Bebé. The fee was reported to be around £7.4 million, believed to be the value of the buy-out clause in the forward's contract, though reports in Portugal later claimed the fee was €9 million, of which the agent company GestiFute received €3.5 million and the club received €5.5 million, as third-party ownership was allowed in Portugal. It was also reported that Real Madrid and Benfica were interested in him. Ferguson only met him the day before the transfer, after being recommended to buy him by his former assistant Carlos Queiroz. On 12 August, David Gill announced that Bebé would not be sent out on loan; instead, he would work with the first-team squad to prove his worth and to learn English. The transfer was completed on 16 August, following Bebé's medical and the submission of the appropriate paperwork, and he was unveiled to the media at a press conference the following day, along with fellow new signings Javier Hernández and Chris Smalling. In 2012, it was reported that Portuguese police were investigating the transfer as part of anti-corruption procedures. Police questioned Bebé's former agent Reis and his current agent Mendes.
On 6 September, he was announced as part of the 25-man squad for Manchester United to play in the Champions League. On 22 September, Bebé made his debut for Manchester United as he replaced Park Ji-Sung in the 74th minute of a 5–2 away victory over Scunthorpe United in the League Cup third round. On 2 October, he made his Premier League debut, replacing Anderson in the 80th minute in their 0–0 draw against Sunderland. His first start came against Wolverhampton Wanderers in the fourth round of the League Cup on 26 October, scoring his first goal in the process, United's first in a 3–2 home win. His first Champions League goal came on his debut in the competition, scoring the final goal of a 3–0 away victory over Bursaspor on 2 November. On 19 February 2011, Bebé played the full 90 minutes in a 1–0 home win against non-league Crawley Town in the fifth round of the FA Cup.
On 16 June 2011, Turkish side Beşiktaş signed Bebé on a season-long loan deal, with the option of making the move permanent for £2 million. However, he suffered a cruciate ligament injury whilst on international duty with the Portugal under-21 side which would rule him out for six months. Bebé made his return from injury and made his debut for Beşiktaş in their Süper Lig match against İstanbul Belediyespor on 26 March 2012, he came off the bench and replaced Mustafa Pektemek in the 76th minute of the 2–2 draw. In April 2012, Bebé was banished from the Beşiktaş squad after breaking a team curfew and staying out until the early hours of the morning.
After leaving Beşiktaş, Bebé was selected for Manchester United's pre-season tour. In his first game, he scored an injury-time volley to save a draw for Manchester United. However, he was unable to break into the team for the season ahead, and on 27 December 2012, Portuguese side Rio Ave confirmed that they signed Bebé on loan. The loan was confirmed by Manchester United on 1 January 2013.
On 9 January, Bebé made his full debut in the Taça da Liga and scored the only goal of a 1–0 win against Marítimo in the 74th minute to qualify for the knockout stage. His first league appearance for Rio Ave came against Olhanense, where he came off the substitute bench for the remaining 30 minutes of the match. His first start for the Portuguese side was against Gil Vicente, where he played 85 minutes before being substituted for Ahmed Hassan. He then played the full 90 minutes of a game against his erstwhile former side, Vitória de Guimarães, which Vitória won 3–1. Bebé got his first assist for Rio Ave against Marítimo, setting up Ahmed Hassan two minutes before half time. He then played 75 minutes in Rio Ave's 2–1 victory against Sporting CP before scoring his second goal at for the club against Académica on 55 minutes, which turned out to be the winning goal. After that he failed to find the net despite starting six of the last seven Rio Ave matches. He expressed a desire to make his stay in Portugal permanent, claiming that he did not receive support in England.
On 2 September 2013, Bebé returned to Portugal for another loan, this time with Paços de Ferreira until the end of the season. He made his debut on 14 September, against Benfica, scoring his first goals in the 4–3 away victory over Marítimo 10 days later. He was in impressive form in March, scoring six goals in six games. He scored two goals in the final game of the season, a 4–2 defeat against Académica, which resulted in his team being entered into a relegation play-off. In this play-off, against CD Aves, Bebé scored the first goal of his team's 3–1 win on 21 May, to finish the season with 14 goals.
On 25 July 2014, it was confirmed that Bebé had signed for Portuguese champions Benfica on a four-year contract, for a fee rumoured to be worth up to €3 million plus 50% of any future sell-on fee. On 10 August, he helped Benfica to win the 2014 Supercup in a penalty shoot-out. On 21 December 2014, he debuted for Benfica in Primeira Liga in a 1–0 home win against Gil Vicente, replacing Jonas for the final 25 minutes.
On 9 January 2015, Bebé joined Spanish club Córdoba on a loan deal until the end of the season. He debuted for the Spanish team in La Liga three days later in a 1–0 win at Rayo Vallecano, failing to score in 18 games in a season which ended with relegation.
On 10 July 2015, Bebé joined Rayo Vallecano on a one-year loan. He made his debut on 22 August 2015, in a goalless draw against Valencia at the Campo de Fútbol de Vallecas, and scored his first goal for the Madrid-based team on 26 September 2015, in an eventual 3–2 loss at Sevilla. They were relegated at the end of the season.
On 12 July 2016, Bebé signed a four-year deal with Eibar, also in the Spanish top tier. He made his debut on 19 August, as the season began with a 2–1 loss at Deportivo de La Coruña, and scored his first goal on 24 September, to conclude a 2–0 home win against fellow Basques Real Sociedad. He returned to Rayo Vallecano in January 2018, on loan until the end of the season.
On 31 August 2018, Bebé returned to Rayo on a permanent deal, after agreeing to a three-year contract.
Bebé was a Portugal under-19 international. In August 2010, Bebé was called up to the under-21 squad for the first time for their 2011 European under-21 qualifiers against England and Macedonia in early September. He made his debut for the under-21s, playing as a lone striker in their 1–0 loss to England on 4 September. He then scored his first goal for the under-21 side three days later in their final qualifying game against Macedonia, scoring the first in a 3–1 win. On 9 August 2011, while playing for Portugal under-21 team in a friendly match against Slovakia, Bebé suffered a cruciate ligament injury to his left knee and he was expected to be out for six months.