Kramarić begon op zesjarige leeftijd met voetballen bij GNK Dinamo Zagreb. Hij scoorde meer dan 450 doelpunten in de jeugd, het hoogste aantal doelpunten die een jeugdspeler van Dinamo Zagreb ooit maakte. Hij debuteerde op 24 mei 2009 in de Kroatische competitie tegen NK Zagreb. Hij viel na 69 minuten in voor Josip Tadić. In juli 2009 werd hij bij het eerste elftal gehaald. In februari 2012 werd Kramarić voor de rest van het seizoen uitgeleend aan NK Lokomotiva Zagreb. Het daaropvolgende seizoen speelde hij ook voor NK Lokomotiva, waar hij succesvol was met 21 doelpunten uit 45 wedstrijden. In juli 2013 keerde hij terug naar Dinamo Zagreb.
Nadat Kramarić eind augustus2013 werd verwijderd uit het eerste elftal van GNK Dinamo Zagreb, vertrok de Kroaat naar rivaal HNK Rijeka.[1] Zijn debuut maakte Kramarić tegen NK Slaven Belupo Koprivnica op 15 september 2013, waarbij hij ook de enige, winnende goal maakte in de eenenvijftigste minuut.[2] In de honderdtwintigste Adriatische derby tussen HNK Rijeka en HNK Hajduk Split won de ploeg van Kramarić met een overweldigende 4-2, waar Kramarić drie doelpunten scoorde.[3] Op 27 september 2014 scoorde Kramarić twee keer in de competitiewedstrijd tegen NK Zagreb. Teamgenoot Ivan Krstanović maakte het later af met zijn derde goal, waardoor de ploeg van Dražen Medić met 3-0 naar huis ging.[4] Tegen Feyenoord trof de Kroatische aanvaller drie keer het net, waardoor de gasten uit Rotterdam verloren met 3-1 in het Stadion Kantrida in oktober 2014.[5] De ploeg uit Rijeka won van de voormalige club van Kramarić (NK Lokomotiva Zagreb) met 6-0 op 9 november 2014. Het team van Tomislav Ivković werd eenvoudig verslagen door onder andere vijf doelpunten van Kramarić.[6] Kramarić werd door de aanvoerders uit de Prva HNL verkozen tot de beste speler van de competitie eind 2014. Daarnaast activeerde HNK Rijeka ook de clausule uit het contract, waardoor de Kroaat het contract met twee jaar verlengde. De voornaamste reden voor deze activering was om de aanvaller niet transfervrij te laten vertrekken.[7]
Kramarić tekende in januari 2015 een contract voor 3,5 jaar bij Leicester City, dat circa €11.700.000,- voor hem betaalde aan HNK Rijeka. Dat was op dat moment het hoogste bedrag dat de Engelse club ooit betaalde en het hoogste bedrag dat de Kroatische club ooit kreeg voor een speler.[8] De Kroaat debuteerde op 17 januari 2015 in de thuiswedstrijd tegen Stoke City FC. In het King Power Stadium ging Leicester City FC onderuit met 0-1. Het eerste doelpunt van Kramarić voor de Engelse sportclub viel in de vijfentwintigste speelronde van de Premier League. Uiteindelijk won de thuisploeg, Arsenal FC, met 2-1.[9]
Leicester verhuurde Kramarić in januari 2016 tot het einde van het seizoen aan TSG 1899 Hoffenheim. Daarmee dwong hij middels een vijftiende plaats op de ranglijst lijfsbehoud in de Bundesliga af. Hoffenheim nam hem na afloop van het seizoen vervolgens definitief over van Leicester. Kramarić tekende tot medio 2020 bij de Duitse club, die circa €10.000.000,- voor hem betaalde.[10]
Op 27 juni 2020, de slotspeeldag van de Bundesliga van het seizoen 2019-20, scoorde Kramarić alle vier doelpunten in een 0-4-overwinning op Borussia Dortmund.[11] Hij werd zo de eerste Hoffenheim-speler die hierin slaagde. Dankzij de zege stelde Hoffenheim een plaatsje in de Europa League veilig.
Kramarić kwam uit voor diverse Kroatische jeugdelftallen. Hij scoorde in totaal 22 doelpunten uit 54 wedstrijden voor de nationale jeugdelftallen. Op 14 november 2012 speelde Kramarić in de selectie van de Prva HNL tegen Kroatië. Kramarić scoorde de eerste treffer, waarna Sammir namens Kroatië de gelijkmaker vlak na rust scoorde. Na het wereldkampioenschap in Brazilië besloot bondscoach Niko Kovač na het vertrek van enkele spelers en de kritiek over de selectie, nieuwe en jonge spelers op te roepen voor de nationale ploeg. "Er zijn veel, jonge jongens die de toekomst van het Kroatische voetbal zijn. Het is tijd dat we na het wereldkampioenschap het slechte beeld over het elftal veranderen", zei de bondscoach over zijn selectie. Kramarić was een van de vele nieuwe en jonge gezichten die een kans kreeg van Kovač voor de start van de EK-kwalificatiecyclus. Kramarić debuteerde op 4 september 2014 in de vriendschappelijke wedstrijd tegen Cyprus, met rugnummer 22 dat jarenlang toebehoorde aan Eduardo da Silva. Van alle debutanten was Kramarić de enige die de volle negentig minuten speelde. Daarnaast assisteerde de Kroaat bij de eerste goal in de zeventiende minuut.[12] De Kroatische staf was na de 2-0 winst op Cyprus vol lof over de debutanten. In het eerste EK-kwalificatieduel van Kroatië scoorde Kramarić de tweede treffer van de wedstrijd tegen Malta. Op 13 oktober 2014 scoorde Kramarić zijn tweede goal voor de Vatreni in de 6-0 overwinning op Azerbeidzjan.[13] Mede door de doelpunten van Kramarić werd Kroatië voor het eerst in de geschiedenis het meest efficiënte voetbalelftal na drie EK-kwalificatiewedstrijden. De Kroaten pakten meteen negen punten en kwamen na drie duels uit op een doelsaldo van 9-0, waarmee de Kroaten elftallen als Engeland (8-0) en IJsland (8-0) achter zich lieten.[14] Hij werd opgeroepen in mei 2015 door de Kroatische bondscoach voor de vriendschappelijke wedstrijd tegen Gibraltar en de EK-kwalificatiewedstrijd tegen Italië op respectievelijk 7 juni en 12 juni 2015.[15] Tegen Gibraltar kwam hij aan het begin van de tweede helft het spel in. Ruim vijftien minuten voor het eindsignaal scoorde Kramarić de laatste en vierde goal van de wedstrijd. De Kroaat speelde in de laatste twee EK-kwalificatiewedstrijden, maar scoorde niet. Met de winst op Malta kwalificeerde Kroatië zich direct voor het Europees kampioenschap in 2016. Hij werd door de bondscoach opgeroepen voor de vriendschappelijk wedstrijd tegen Rusland op 17 november. Kramarić maakte ook deel uit van de definitieve selectie van Kroatië voor het Europees kampioenschap in Frankrijk.[16] Kroatië werd op 26 juni in de achtste finale tegen Portugal uitgeschakeld na een doelpunt van Ricardo Quaresma in de verlenging.