Gabriel begon z'n carrière bij Cruzeiro EC. Gedurende het seizoen 2010 en 2011 was hij reservedoelman. Hij speelde geen enkele wedstrijd in het eerste team van Cruzeiro. In juli 2012 legde AC Milan de Braziliaanse doelman vast als stand-in voor Christian Abbiati en Marco Amelia. In zijn tweede seizoen bij Milan speelde hij zeven competitiewedstrijden ter vervanging van Abbiati. In de jaren nadien leende Milan hem uit aan Carpi FC 1909, SSC Napoli, Cagliari Calcio en Empoli FC. Bij Carpi en Empoli fungeerde hij tijdens zijn uitleenbeurt eerste doelman, bij Napoli en Cagliari was hij de doublure van respectievelijk Pepe Reina en Rafael.
In augustus 2018 vertrok Gabriel op definitieve basis bij Milan: hij tekende op transfervrije basis bij Perugia Calcio in de Serie B. Na een seizoen, waarin hij titularisdoelman was, verhuisde hij naar Serie A-club US Lecce.
Gabriel was eerste doelman van Brazilië –23 op de Olympische Spelen 2012 in Londen. Brazilië verloor de finale met 2-1 van Mexico. Op 15 augustus 2012, vier dagen na de olympische finale, maakte Gabriel zijn debuut voor het Braziliaans voetbalelftal, tegen Zweden. Brazilië won met 3-0. Gabriel speelde de volledige wedstrijd.