Gabriel sloot zich op achtjarige leeftijd aan bij de jeugdopleiding van Santos. Op 25 september 2012 ondertekende hij zijn eerste profcontract, waarin een afkoopclausule van 50 miljoen euro staat. Hij debuteerde voor Santos op 17 januari 2013, in een vriendschappelijke wedstrijd tegen Grêmio Barueri. Op 26 mei 2013 debuteerde Gabriel in de Série A, tegen Flamengo. Hij was toen 16 jaar en 9 maanden oud. Op 21 augustus 2013 maakte hij zijn eerste doelpunt voor Santos, in de Copa do Brasil tegen Grêmio.[2]
Op 31 augustus 2016 tekende Gabriel een contract tot medio 2021 bij Internazionale, dat circa €25 miljoen voor hem betaalde aan Santos.[3][4] Gedurende het seizoen 2016/17 speelde hij negen wedstrijden voor Inter. De Italiaanse club verhuurde hem gedurende het seizoen 2017/18 aan Benfica, daarvan mocht hij na een halfjaar vertrekken. Hij werd daarop gedurende het jaar 2018 verhuurd aan Santos.[5] In 2019 werd hij door Inter voor de derde keer verhuurd, ditmaal aan Flamengo. Hier bloeide hij op en maakte hij 36 doelpunten. Bovendien besliste hij met twee doelpunten de finale van de Copa Libertadores 2019.[6] Flamengo nam Gabriel in januari 2020 definitief over van Internazionale, dat circa €17 miljoen voor hem ontving.[7] Hij tekende een contract tot 31 december 2024 bij de Braziliaanse club.
Gabriel werd in juni 2011 opgeroepen voor Brazilië –15. In 20 juni 2013 werd hij geselecteerd voor Brazilië –17. In 2014 debuteerde hij in Brazilië –20. In 2016 won hij met het Braziliaans olympisch team goud op de Olympische zomerspelen. Gabriel debuteerde op 30 mei 2016 in het Braziliaans voetbalelftal, in een met 0–2 gewonnen oefeninterland in en tegen Panama. Hij maakte zelf het laatste doelpunt.