Joselu played his two first professional matches for local Celta de Vigo in the second division, late in the 2008–09 season. Since the age of 18, at about the same time he made his debuts with the main squad, he played with the B-team in the third level. In late summer 2009, Joselu was purchased by Real Madrid, being immediately loaned to his former team for a further campaign. He was relatively used during the division two campaign, but only scored four goals as the team finished in 12th position.
Real Madrid
Joselu was Real Madrid Castilla's top scorer in the 2010–11 season, alongside Álvaro Morata, but the team failed to win promotion in the playoffs. On 21 May 2011, he made his first-team – and La Liga – debut, coming on as a substitute for Karim Benzema for the last ten minutes of a home fixture against Almería: he scored almost immediately from a Cristiano Ronaldo cross, making it 8–1 to the hosts. On 20 December 2011, in his second official appearance for the main squad, Joselu replaced Benzema in the 77th minute of the home match against Ponferradina, for the season's Copa del Rey. He scored the goal to make the match 4–1 two minutes later, in an eventual 5–1 win. In his second season with Castilla, Joselu became an essential offensive unit for manager Alberto Toril, and responded by netting 26 goals which made him the competition's top scorer, as his team were promoted to division two after five years, as champions. He subsequently attracted the attention of several European clubs. Joselu said in 2015 that he did not regret his time at Real Madrid despite his limited first-team opportunities, due to his experiences training with its players and manager José Mourinho.
TSG 1899 Hoffenheim
On 8 August 2012, Joselu signed a four-year contract with 1899 Hoffenheim for an undisclosed fee. He made his Bundesliga debut on 16 September, playing 30 minutes in a 3–5 away loss against SC Freiburg, and scored his first goal for his new club ten days later, contributing to a 3–0 success at VfB Stuttgart, and added a brace against SpVgg Greuther Fürth on 19 October 2012. He played 25 times for the Wirsol Rhein-Neckar-Arena side, scoring five goals as they finished in 16th position. At the end of his first season with Hoffenhiem, Joselu admitted that he struggled to adapt to his new surroundings and was loaned out to Bundesliga rivals Eintracht Frankfurt for the 2013–14 season. He rediscovered his form under Frankfurt manager Armin Veh at the Commerzbank-Arena, scoring 14 goals in 33 appearances as the club finished in 13th position and reached the knockout stages of the UEFA Europa League.
Hannover 96
On 9 June 2014, Joselu joined Hannover 96 on a four-year deal for a €5 million transfer fee. In his only season there he made 32 appearances, scoring 10 goals.
Stoke City
On 16 June 2015, Joselu joined English side Stoke City for a fee of £5.75 million, therefore fulfilling a lifelong ambition to play in England's top division. He made his Premier League debut on 15 August away to Tottenham Hotspur, as a 59th-minute substitute for Jonathan Walters; he won a penalty when fouled by Toby Alderweireld, converted by Marko Arnautović as Stoke came from 2–0 down to draw 2–2. On 28 December, after coming on in place of compatriot Bojan, Joselu scored his first goal for the Potters in a 4–3 win at Everton. He played 27 times for Stoke in 2015–16, scoring four goals as the team finished in ninth position. Towards the end of the campaign, Stoke manager Mark Hughes stated that Joselu had made a slow start to life in English football. On 31 August 2016, Joselu returned to Galicia to join Celta's rivalsDeportivo de La Coruña on a season-long loan deal. He scored his first goals for the team on 10 December, a two-minute brace as a substitute to give them the lead in an eventual 3–2 loss on his return to Real Madrid. Joselu scored six goals in 24 appearances for Deportivo before his season was ended due to an Achilles injury.
On 16 August 2017, Joselu joined Premier League side Newcastle United on a three-year deal for a fee of £5 million. He made his debut four days later as a 52nd-minute substitute for Dwight Gayle in a 1–0 loss at Huddersfield Town, and scored his first goal for the club in a 3–0 home win over West Ham United on 26 August. Much like his fellow strikers, Joselu's form was inconsistent as Newcastle faltered in the league, but he was still top scorer by January when he scored in a 1–1 draw with Swansea City, although he also had his penalty saved by Nick Pope in a 1–1 draw with Burnley. He ended up finishing the season as third highest top scorer behind Gayle and Ayoze Pérez. In the 2018–19 season, Joselu was fourth choice behind Pérez and new signings Salomón Rondón and Yoshinori Muto. The two league goals he scored all season both came in August in losses to Tottenham Hotspur and Chelsea. His final goal for the club came in a FA Cup third round replay victory over Blackburn Rovers on 15 January 2019, but by March, he was out of the squad altogether.
Alavés
On 15 July 2019, Joselu returned to La Liga to join Alavés on a three-year contract, for an undisclosed fee, reported to be around £2.5 million.
Style of play
Joselu plays as a striker and has been described by his former manager Mark Hughes as a "technically adept forward...He's a good technical player, he's got good ability and I like his movement. His link-up play is very good and with the finishing we've done so far in training I've been very pleased. You can see technically he's very adept, getting his body in the right position to take chances".