Hofmann begann in der Bambinimannschaft des FC Rot in der Gemeinde St. Leon-Rot und blieb dort bis zum zweiten D-Jugend-Jahr, ehe er 2004 in die Jugend der TSG 1899 Hoffenheim wechselte.[1][2] In der A-Jugend Saison 2010/11 spielte er in der A-Junioren-Bundesliga und erzielte neun Tore in 18 Spielen. Im April 2011 absolvierte er beim 1:0-Auswärtssieg bei der zweiten Mannschaft vom TSV 1860 München sein Debüt in der U23 der TSG.[3] Am Ende der Regionalligasaison kam Hofmann noch auf fünf Ligaspiele, in denen er zwei Treffer erzielte.
Zur Saison 2011/12 wechselte Hofmann zu Borussia Dortmund II.[4] Sein Ligadebüt im schwarz-gelben Trikot gab er am 6. August beim 2:0-Auswärtssieg beim 1. FC Kaiserslautern II und erzielte gleich sein erstes Saisontor.[5] Am 10. September (7. Spieltag) gelang ihm beim 4:0-Auswärtssieg bei der zweiten Mannschaft vom Erzrivalen FC Schalke 04 ein Doppelpack.[6] Nachdem die zweite Mannschaft am Ende der Hinrunde 14 Punkte Rückstand auf die Sportfreunde Lotte und den damit einzigen Aufstiegsplatz hatte, startete das Team in der Rückrunde eine Aufholjagd, erreichte 52 von maximal 57 möglich erreichbaren Punkten und stieg damit mit einem Punkt Vorsprung vor Lotte in die 3. Fußball-Liga 2012/13 auf. Daran hatte Hofmann durch zehn Tore Anteil und erzielte im entscheidenden Spiel am letzten Spieltag beim Wuppertaler SV zwei Treffer beim 5:3-Sieg.[7]
Die Vorbereitung für die Saison 2012/13 absolvierte er aufgrund der vielen EM-Fahrer bei den Profis des BVB.[8] Zuvor hatte er an der Teambuildingmaßnahme der U-23-Mannschaft in Schweden teilgenommen. Am 11. Juli erzielte er im Vorbereitungsspiel gegen den SV Meppen den 2:1-Siegtreffer[9][10][11] und imitierte dabei den Torjubel von Mario Balotelli bei seinem zweiten Tor gegen Deutschland.[12] Am 21. Juli absolvierte er bei der 0:2-Auftaktniederlage beim VfL Osnabrück sein Debüt in der 3. Liga.[13]
Am 16. Dezember 2012 debütierte Hofmann in der Bundesliga, als er beim 3:1-Auswärtssieg gegen seinen alten Verein, die TSG 1899 Hoffenheim, in der 89. Spielminute für Mario Götze eingewechselt wurde.[14] Im Januar 2013 nahm er am Trainingslager der ersten Mannschaft in La Manga del Mar Menor, Spanien zur Vorbereitung auf die Rückrunde 2012/13 teil.[15] Am 6. April 2013 stand Hofmann beim 4:2-Heimsieg gegen den FC Augsburg erstmals in der Startelf des BVB und bereitete dabei den zwischenzeitlichen 2:2-Ausgleichstreffer von Julian Schieber vor.
Hofmanns Profivertrag in Dortmund war datiert bis 2018.[16] Seit der Saison 2013/14 war er fester Bestandteil der Profimannschaft und trug die Rückennummer 7. Am 18. August 2013 erzielte er im Heimspiel gegen Eintracht Braunschweig (2:1) als Einwechselspieler sein erstes Bundesligator. Am 12. April 2014 folgte beim 3:0-Auswärtssieg gegen den FC Bayern München sein zweiter Bundesligatreffer.
Am 1. September 2014 wechselte Hofmann bis zum Ende der Saison 2014/15 auf Leihbasis zum 1. FSV Mainz 05.[17] Am 18. Oktober erzielte er im Bundesligaspiel gegen den FC Augsburg (2:1) mit dem Treffer zum 1:0 sein erstes Heimtor für die Mainzer und zog sich im weiteren Spielverlauf einen Außenbandriss zu. Insgesamt bestritt er für Mainz zehn Spiele und erzielte dabei drei Tore.
Zur Saison 2015/16 kehrte Hofmann nach Dortmund zurück, konnte sich aber unter dem neuen Trainer Thomas Tuchel nicht durchsetzen und kam lediglich auf sieben Bundesligaeinsätze, in denen er ein Tor erzielte.
In der Winterpause 2015/16 wechselte er zu Borussia Mönchengladbach.[18] Am 21. Oktober 2018 erzielte er beim 4:0-Sieg im Bundesligaspiel gegen Mainz 05 drei Treffer.[19] In der „Fohlenelf“ stieg er über die Jahre zum Leistungsträger auf und spielte 2021/22 mit 26 Pflichtspielen in der Liga und zwei im DFB-Pokal, in denen er 12 Tore erzielte und sechs weitere vorbereitete, seine bis dahin beste Saison. Sein Vertrag in Mönchengladbach lief zuletzt bis 2025 inklusive einer Option für ein weiteres Jahr.[20]
Anfang Juli 2023 wechselte er ligaintern zu Bayer 04 Leverkusen. Dort einigte er sich mit dem Verein auf eine Zusammenarbeit bis Mitte 2027.[21] In seiner ersten Saison bei Bayer 04 Leverkusen gewann Hofmann mit der "Werkself" die Bundesliga und den DFB-Pokal und erreichte das Finale der Europa League.
Nationalmannschaft
Hofmann spielte zwischen den Jahren 2009 und 2010 für die U-18-Nationalmannschaft. Sein letztes Länderspiel für die U-18-Nationalmannschaft absolvierte er am 25. März 2010 gegen Frankreich.[22] Am 13. August 2013 debütierte Hofmann für die deutsche U-21-Nationalmannschaft im Testspiel im Dreisamstadion in Freiburg im Breisgau gegen Frankreich. Er wurde in der 60. Minute für Leon Goretzka eingewechselt.[23]
Am 2. Oktober 2020 berief Bundestrainer Joachim Löw Hofmann in den Kader der A-Nationalmannschaft für das Freundschaftsspiel gegen die Türkei und die Spiele in der UEFA Nations League gegen die Ukraine sowie die Schweiz. Im Spiel gegen die Türkei am 7. Oktober 2020 kam er durch eine Einwechslung in der 59. Minute zu seinem Länderspieldebüt. Mit der deutschen Auswahl erreichte er bei der Europameisterschaft 2021 das Achtelfinale und schied mit der Mannschaft gegen England aus.