Swoją karierę piłkarską zaczynał w małych klubach SV Unlingen, a następnie FV Saulgau. Potem trafił do juniorskiej drużyny SSV Ulm 1846, w której trenował do 2001 roku. Wtedy odszedł do VfB Stuttgart, gdzie najpierw grał w drużynie młodzieżowej, a w 2003 roku został włączony do składu rezerw. Jeszcze w sezonie 2003/2004 zadebiutował w Bundeslidze, 8 maja w wyjazdowym meczu 32. kolejki, przegranym 1:2 z Hamburger SV, gdy w 48. minucie zmienił Imre Szabicsa. W marcu pojawił się w meczu 1/8 finału Ligi Mistrzów UEFA przeciwko Chelsea F.C. W tym samym sezonie z młodzieżowym zespołem VfB został mistrzem Niemiec. W sezonie 2004/2005 w drużynie amatorów w Regionallidze zdobył 15 goli w 24 meczach.
17 września 2005 w wygranym wyjazdowym meczu z 1. FSV Mainz 05 zdobył swojego pierwszego gola w lidze. Łącznie w sezonie 2005/2006 wystąpił w 30 spotkaniach i zdobył 6 goli, dokładając do tego 2 w Pucharze UEFA (oba w meczu z Rapidem Bukareszt, wygranym 2:1). Ze Stuttgartem zajął 9. miejsce w Bundeslidze.
Latem 2006 przedłużył kontrakt do 30 czerwca 2011. Od początku sezonu 2006/2007 zaczął regularnie grać w pierwszym składzie. W rundzie jesiennej zdobył 8 goli w lidze, a w każdym meczu pierwszych czterech kolejek rundy wiosennej zdobywał gola. W meczu z VfL Bochum doznał kontuzji i do końca sezonu nie pojawił się na boisku. Wraz ze Stuttgartem wywalczył mistrzostwo Niemiec. W całym sezonie zdobył 14 goli w lidze.
Od początku sezonu 2009/2010 był piłkarzem Bayernu Monachium. Pierwszy sezon w Bayernie zakończył z 14 trafieniami w lidze.
Sezon 2010/11 zakończył z tytułem króla strzelców Bundesligi z 28 bramkami. W sezonie 2011/2012 strzelił we wszystkich rozgrywkach 41 goli w 52 meczach. W Lidze Mistrzów Bayern dotarł do finału z Chelsea F.C. w Monachium, w którym Gómez rozegrał pełne 90 minut wraz z dogrywką oraz trafił do bramki podczas serii rzutów karnych. Mecz wygrała Chelsea.
W sezonie 2012/2013, z powodu kontuzji, stał się zmiennikiem Mario Mandžukicia. Wraz z klubem sięgnął po tzw. potrójną koronę, zdobywając Mistrzostwo Niemiec, Puchar Niemiec oraz zwyciężając w Lidze Mistrzów.
Po zakończeniu sezonu odszedł za około 16 milionów euro do włoskiego ACF Fiorentina.
W sezonie 2013/2014 z powodu kontuzji kolana wystąpił w 9 meczach Serie A, w których zdobył 3 bramki i jedną asystę. W Lidze Europy wystąpił w 6 meczach. W 1/8 finału z Juventusem strzelił bramkę na 1:1, była to jego jedyna bramka w tych rozgrywkach. W całym sezonie wystąpił w 15 meczach, zdobywając 4 bramki i 2 asysty.
W sezonie 2014/2015 został królem strzelców Pucharu Włoch z 4 bramkami na koncie. W lidze wystąpił w 20 spotkaniach, zdobywając 4 bramki i notując 2 asysty. W całym sezonie wystąpił w 32 meczach, strzelając 10 bramek i notując 4 asysty.
Po sezonie 2014/15 został wypożyczony do tureckiego Beşiktaş JK.17 sierpnia 2016 został piłkarzem VfL Wolfsburg, podpisując trzyletnią umowę.
Od 2018 roku kontynuuje karierę w VfB Stuttgart. 28 czerwca 2020 ogłosił zakończenie kariery piłkarskiej, a tego samego dnia zakończył karierę piłkarską[1].
Kariera reprezentacyjna
Karierę reprezentacyjną Gomez rozpoczął wcześnie, bo od występów w reprezentacji Niemiec U-16, w której zagrał w 3 meczach i zdobył 1 gola. Potem przyszły występy w kadrze U-17 (14 meczów, 5 goli), U-17/U-18 (23 mecze, 11 goli), U-20 (6 meczów, 1 gol) oraz U-21 (2 mecze, 1 gol).
7 lutego 2007 Gomez zadebiutował w pierwszej reprezentacji pod wodzą Joachima Löwa, w wygranym 3:1 towarzyskim meczu z reprezentacją Szwajcarii. W 30. minucie debiutu strzałem głową zdobył gola na 2:0 dla Niemców. Gomez uczestniczył w EURO 2008 na boiskach Austrii i Szwajcarii, jednak nie udało mu się tam nic zwojować. Nie strzelił żadnej bramki, a wystąpił w czterech meczach. Z reprezentacją doszedł do finału, gdzie nie udało się jednak wygrać z Hiszpanami. Gomez pojawił się na boisku w drugiej połowie. Na Euro 2012 strzelił trzy gole, był jednym z 6 królów strzelców turnieju. Z powodu kontuzji nie zagrał na Mistrzostwach Świata 2014 w Brazylii. Ostatni mecz w reprezentacji Gomez rozegrał 3 września 2014 roku w Düsseldorfie. Niemcy przegrali z Argentyną 2-4. Mario Gomez nie był powoływany na żaden z meczów eliminacji do Mistrzostw Europy 2016, jednak na same finały został powołany do kadry, która odpadła w półfinale.