Club career
Atlético Madrid
Gabi was born in Madrid. A product of Atlético Madrid's youth system, he was seldom used during his debut season with the Colchoneros' first team.
After a loan to another club in the capital, Getafe CF, Gabi would make 52 La Liga appearances for the club from 2005 to 2007, scoring his only goal in a 1–1 away draw against RCD Espanyol on 9 April 2006.
Zaragoza
In early February 2007, Gabi joined Real Zaragoza on a €9 million transfer, agreeing to a four-year contract effective as of July. He was an undisputed starter in his first year, but the Aragonese were relegated from the top flight.
Defensive-minded Gabi netted four times in 35 games in the 2008–09 campaign, as his team immediately regained their lost status. In the following season he again was first choice, helping to a final 14th position.
Again a starter in the 2010–11, only missing matches due to suspension, Gabi scored a career-best ten goals as Zaragoza again escaped relegation, six from penalties – he was also their captain. On 12 March 2011, he scored twice from the spot in a 4–0 home win against Valencia CF. On 30 April, he converted a penalty in a 3–2 victory away to Real Madrid and, on the last matchday, scored twice from open play in a 2–1 win at Levante UD that secured his team's top-flight status.
Atlético return
On 1 July 2011, Gabi returned to Atlético Madrid on a transfer fee of around €3 million. He scored his first goal for the team on 4 December, in a 3–1 home win over Rayo Vallecano – adding one in his own net– and started most of the first season in his second spell, partnering fellow youth graduate Mario Suárez in defensive midfield.
Gabi played 45 official matches in the 2012–13 campaign, including seven in the side's victorious run in the Copa del Rey, the first in 17 years. He was also selected by manager Diego Simeone as the new captain.
On 17 May 2014, in the away match to FC Barcelona that was the last of the season, Gabi took a 49th-minute corner kick which was headed in by Diego Godín to equalise 1–1, and give Atlético its first league title since 1996. On 4 July, he signed a new contract that kept him at the club until 2017.
In the second leg of a domestic cup quarter-final against Barcelona on 28 January 2015, Gabi was sent off in the tunnel at the end of the first half; his midfield partner Suárez was also dismissed later on, in an eventual 2–3 home defeat. On 7 October 2016, the 33-year-old inked a new contract until June 2018, commenting on the deal: "I always say that playing with Atlético de Madrid was my childhood dream, so I cannot ask for more than what I am living these years."
Gabi scored his first goal of the season – from 49 appearances – on 16 May 2018, netting from close range after an assist from Koke in the last minute of the Europa League final against Olympique de Marseille, a 3–0 win in Lyon.
Al Sadd
Gabi moved abroad for the first time on 2 July 2018, signing a two-year contract at Qatar Stars League club Al Sadd SC. He partnered veteran compatriot Xavi in midfield, and won the league in their first season together.
On 15 June 2020, Gabi left the Jassim bin Hamad Stadium. On 29 November, he announced his retirement aged 37.


