He began his career with Vitória in 2010, winning two Campeonato Baiano titles and finishing as runner-up in the 2010 Copa do Brasil. He also spent a season-and-a-half in Spain's top flight with Villarreal before joining Arsenal in January 2015. In August 2017, Gabriel completed a move to Valencia.
Born in São Paulo, Gabriel joined Esporte Clube Vitória's youth setup in 2009 from Clube Atlético Taboão da Serra, after having failed trials at Grêmio Barueri Futebol and Santos FC. He made his senior debut for the former on 7 March 2010, starting in a 3–1 win at Camaçari for the Campeonato Baiano championship, his only appearance in a season in which Vitória won the state title. He made his Série A debut on 15 May, replacing Vilson in a 1–1 home draw against Flamengo.
In August 2010, Gabriel appeared in both matches of 2010 Copa do Brasil finals against Santos, but playing as a right back in a 3–2 aggregate loss. On 5 December, in the last game of a league season which saw his team relegated, Gabriel was sent off for a foul on Anaílson in a goalless home draw against Atlético Goianiense.
He made his first team breakthrough in late 2011, and went on to play a crucial role in the following year, appearing in 35 matches as Leão returned to Série A. On 6 September 2012 Gabriel signed a contract extension with Vitória, until 2016.
He was elected the best central defender of 2013 Campeonato Baiano; he opened in a 7–3 win at city rivals Esporte Clube Bahia on 12 May, in the first leg of the final (8–4 aggregate). On 25 May, in the opening game of the 2013 season, he scored his only goal in the national league, putting Vitória 2–0 up after 12 minutes against Sport Club Internacional at the Arena Fonte Nova, an eventual 2–2 draw.
On 15 August 2013 Gabriel moved to La Liga outfit Villarreal, signing a five-year deal with the club. He made his debut in the competition on 10 November, starting in a 1–1 home draw against Atlético Madrid.
Gabriel featured in 18 league matches during his first season abroad, sharing terms with Chechu Dorado, as the Yellow Submarine finished sixth and subsequently returned to a European competition. He made his UEFA Europa League debut on 21 August 2014, starting in a 3–0 away win against FC Astana.
Profiting from Mateo Musacchio's injury, Gabriel also overtook Dorado and was made a starter in 2014–15. He formed a strong partnership with new signing Víctor Ruiz, with his side conceding only 17 goals in the 19 league matches in which he appeared.
On 26 January 2015, Gabriel was granted a work permit by the UK government and expected to join Arsenal for a fee of around £11.3 million. He signed for the club two days later, with Joel Campbell moving the other way on loan. Manager Arsène Wenger stated that despite the player's fitness, Gabriel could make errors in his first matches due to not being able to speak English.
Gabriel made his debut for Arsenal on 15 February, playing the entirety of a 2–0 home win over Middlesbrough in the fifth round of the FA Cup. He made his Premier League debut six days later, coming on for Alexis Sánchez in the final minute of a 2–1 win away to Crystal Palace.
Gabriel made his first full start in the Premier League in Arsenal's 2–0 home win over Everton on 1 March. His performance was praised by Match of the Day pundit Danny Murphy: despite a shaky start to the game, Gabriel executed a perfect sliding tackle on the goal-bound Romelu Lukaku, cleanly winning the ball and creating an Arsenal counter-attack. He was an unused substitute on 30 May, as Arsenal won the FA Cup Final 4–0 against Aston Villa at Wembley Stadium.
On 19 September 2015, Gabriel was sent off at Chelsea for a tussle with Diego Costa; Santi Cazorla was later dismissed as nine-man Arsenal lost 2–0. Gabriel initially received a standard three-match suspension for violent conduct after receiving a direct red card, but the decision was later withdrawn after a "wrongful dismissal claim"; he was however banned for one match and fined £10,000 for improper conduct by not leaving the pitch immediately.
On 28 December 2015, Gabriel scored his first goal in European football, heading in Mesut Özil's corner kick to open a 2–0 win against Bournemouth; the result put the Gunners to the top of the Premier League.
On 18 August 2017, Gabriel returned to Spain to join Valencia on a five-year contract.
On 20 March 2015, Gabriel was called up to the Brazil national football team for the first time, replacing the injured David Luiz for friendly matches against France and Chile. However, he did not feature in either match.As of 30 April 2017
FA Cup: 2014–15, 2016–17
Campeonato Baiano Best Central Defender: 2012, 2013