Hofmann debuttò con la prima squadra del Borussia Dortmund il 16 dicembre 2012 entrando al minuto 89' nella gara vinta per 3-1 sul campo dell'Hoffenheim. Il 6 aprile 2013 nella gara contro l'Augsburg regala il primo assist nella massima competizione tedesca, la Bundesliga, e con la maglia della prima squadra contribuendo al risultato finale di 4-2 per i giallo-neri.
Nella stagione successiva Hofmann trova la prima presenza durante i trentaduesimi di finale della Coppa di Germania nella gara vinta 3-0 sul campo del Wilhelmshaven, rendendosi protagonista grazie ai due assist regalati al giovanissimo compagno Marvin Ducksch e a Robert Lewandowski. Il 10 agosto 2013 esordisce in Bundesliga nella nuova stagione procurandosi il rigore trasformato poi da Lewandowski nella trasferta vinta 4-0 sul campo dell'Augsburg. Segna il suo primo gol in Bundesliga il 18 agosto successivo sbloccando il risultato al 75' minuto della partita casalinga contro l'Eintracht Braunschweig. Nella stessa partita si procura anche il rigore trasformato poi da Marco Reus per il momentaneo 2-0; la partita finirà poi 2-1.
Il 18 settembre 2013 fa il suo esordio in Champions League nella sconfitta per 2-1 sul campo del Napoli. Il 3 dicembre 2013 torna ad essere protagonista nella vittoria per 2-0 in DFB-Pokal sul campo del Saarbrucken prima regalando l'assist del vantaggio al compagno Schieber poi realizzando, sul finire del primo tempo, il secondo gol che chiude la gara. Il primo marzo 2013 regala un altro assist nella partita casalinga contro il Norimberga al compagno armeno Mkhitaryan che segna il gol del definitivo 3-0.
La stagione 2014-2015 si apre con la vittoria della Supercoppa di Germania, battendo il Bayern Monaco con il punteggio di 2-0. Durante tale stagione passa in prestito al Magonza, con cui colleziona 10 presenze e mette a segno 3 gol. Il 30 giugno 2015 fa ritorno al Dortmund.
Borussia Mönchengladbach
Il 1º gennaio 2016 passa al Borussia Mönchengladbach per 8 milioni di euro, firmando un contratto fino al 30 giugno 2020.
Hofmann ha giocato tra il 2009 e il 2010 per l'under-18 tedesca e ha collezonato la sua ultima presenza per la nazionale under-18 il 25 marzo 2010 contro i pari età della Francia, prima di passare a rappresentare l'under-21 tedesca.[4]
Nell'ottobre 2020, è stato convocato per la prima volta in nazionale maggiore dal ct Joachim Löw per le partite contro Turchia, Ucraina e Svizzera. Ha fatto il suo debutto nell'amichevole contro la Turchia (3-3).[5] Il 19 maggio 2021, è stato convocato Euro 2020.[6]
Il 5 settembre 2021 realizza il suo primo gol in nazionale maggiore nel successo per 6-0 contro l'Armenia.[7]