Gabriel started his footballing career in the youth teams of Cruzeiro in 2007. During the 2010 and 2011 seasons, he also featured as an unused substitute with the first team on four occasions, including one game of the 2011 Campeonato Mineiro, which Cruzeiro eventually won.
Milan (2012–2018)
Early seasons (2012–2014)
At the beginning of the 2012–13 season, Gabriel was signed by Milan to serve as backup for Christian Abbiati and Marco Amelia. After making no official appearances during his first year at the club, Gabriel's official debut came on 19 October 2013, as manager Massimiliano Allegri chose him to start in place of an injured Abbiati for a Serie A game at home against Udinese; the Brazilian kept a clean sheet in the 1–0 win. He finished his second season at Milan with seven appearances.
Loan spells (2014–2018)
On 1 September 2014, Gabriel joined Serie B side Carpi on a season-long loan from Milan. Serving as the first-choice goalkeeper, he played 39 league games out of 42, all as a starter, and contributed to the club's successful season, in which they finished at the top of the table and won their first-ever promotion to Serie A. For the 2015–16 season, Gabriel moved to Serie A club Napoli, once again on a season-long loan. Serving as Pepe Reina's understudy, Gabriel finished the season with four appearances. Gabriel went back to Milan for the 2016–17 season. However, being second-choice to Gianluigi Donnarumma, he didn't get any playing time in the competitive games during the first half of the season. In January 2017, he was loaned out to Cagliari for the rest of the season. However, he still didn't get regular playing time, making only three appreances. After returning to Milan for the 2017–18 season, Gabriel once again failed to make any competitive appearance, having fallen back to fourth choice behind the Donnarumma brothers and Marco Storari. On 30 January 2018, he was loaned out to Serie B sideEmpoli for the remainder of the season.
Gabriel was called up by Brazil under-23 to take part in the 2012 Olympic Football tournament as a replacement for the injured Rafael Cabral two days before the start of the competition. After remaining on the bench for the first two games, Gabriel made his debut in the tournament in the third and last match of the group stage against New Zealand, which Brazil won 3–0. He retained his place as a starter in each of the following three games, as Brazil went on to win the silver medal after being defeated 2–1 by Mexico in the final.
Brazil
Three days after playing in the Olympic final, on 15 August 2012, Gabriel made his senior debut for Brazil, featuring as a starter in a 3–0 friendly win over Sweden, having the distinction of playing his first professional match at full international level.