Juanmi was born in Coín, Province of Málaga. Raised in Málaga CF's youth academy, he made his first-team debut on 13 January 2010 in a Copa del Reyaway match against Getafe CF, scoring as the Andalusians were crushed 1–5, which made him the club's youngest ever goalscorer in an official game at the age of only 16; Four days later, he first appeared in La Liga, playing eight minutes in a 1–0 home win over the same opponent. On 27 March 2010, Juanmi assisted Apoño's goal in a 1–1 home draw against CD Tenerife. Although Málaga were threatened with relegation until the last day of the season, he still was able to make five first-team appearances, totalling 110 minutes; on 5 August he signed his first professional contract, keeping him with the club until the end of 2014–15. On 12 September 2010, 17-year-old Juanmi started at Real Zaragoza, scoring twice as Málaga led 5–0 at the 30-minute mark. By doing this, he became the youngest player in the competition's history to score two goals in only one game. After the summer of 2011 signing of Ruud van Nistelrooy, Juanmi was further demoted down Málaga's attacking pecking order. He made his first appearance of the season on 11 December 2011, coming on as a substitute and scoring in a 1–1 home draw to CA Osasuna; two days later he started at Getafe for the Spanish Cup, and netted the game's only goal in the 84th minute. On 15 January 2013, after featuring even more rarely, Juanmi was loaned to Segunda División's Racing de Santander until June. He failed to find the net during his short spell, and his team also suffered relegation. Juanmi was given more playing time by new Málaga manager Bernd Schuster in 2013–14, and was made a starter by Javi Gracia in the following campaign. On 31 January 2015 he was definitely promoted to the main squad, being handed the number 11 jersey.
On 9 June 2016, after only 19 goalless appearances across all competitions – two starts – Juanmi returned to his home country and joined Real Sociedad for an undisclosed fee. He made his competitive debut on 21 August, starting as they began the season with a 0–3 home loss to Real Madrid, and six days later he scored his first goal to open a 2–0 win at Osasuna. Juanmi was given a yellow card on 28 February 2017 for celebrating the opening goal of a 2–2 draw with SD Eibar at Anoeta Stadium by lifting up his shirt to show a tribute to the recently deceased leukemia sufferer Pablo Ráez, and was sent off in the second half for a second booking.
Betis
On 14 June 2019, Juanmi signed a five-year contract with Real Betis for a €8 million fee. He spent the vast majority of his debut campaign on the sidelines, nursing a left-foot injury. Juanmi scored his first competitive goal on 28 June 2020, but in a 2–4 away loss against Levante UD.