Forsberg begon zijn loopbaan bij GIF Sundsvall en sloot bij het eerste elftal aan in 2009, toen de club in de tweede divisie, genaamd de Superettan uit kwam. Hij werd hetzelfde seizoen nog uitgeleend aan derde divisieclub Medskogsbron BK. Hij scoorde twee keer tijdens de eerste wedstrijd, maar na zijn tweede wedstrijd werd hij weer teruggehaald door zijn club GIF Sundsvall. Hij kwam nog een aantal keer uit voor de hoofdmacht van GIF dat seizoen. In het tweede seizoen werd Forsberg een vaste waarde voor Sundsvall en speelde uiteindelijk alle dertig wedstrijden tijdens het seizoen 2010. In het seizoen 2011 speelde Forsberg 27 wedstrijden en maakte hij elf doelpunten, waarbij zijn club promoveerde naar de Allsvenskan. In 2012 speelde Forsberg 21 wedstrijden en maakte zes doelpunten en zijn club degradeerde weer uit de Allsvenskan na play-offwedstrijden tegen Halmstads BK.
Malmö FF
Op 10 december 2012 werd Forsberg als nieuwe aanwinst van Malmö FF voorgesteld. Hij sloot zich bij de club aan op 1 januari 2013 toen de transfermarkt weer openging in Zweden. Forsberg tekende een contract tot het einde van het seizoen 2016. Zijn eerste seizoen bleek succesvol, hij speelde 28 wedstrijden van de dertig in totaal en was daarin vijfmaal trefzeker; zijn club werd daarbij landskampioen in het seizoen 2013. In 2014 speelde Forsberg een glansrol voor zijn club in de competitie, waarbij hij veertien doelpunten maakte en vijf assists gaf. Zijn club werd opnieuw kampioen in het seizoen 2014. Forsberg speelde in het seizoen 2014/15 voor het eerst in de UEFA Champions League.
RB Leipzig
Forsberg tekende op 7 januari 2015 bij RB Leipzig, dat 3,7 miljoen euro voor hem betaalde. Hij werd meteen basisspeler. Forsberg dwong in het seizoen 2015/16 met Leipzig promotie af naar de Bundesliga.[1] Zijn ploeggenoten en hij eindigden hierin in het seizoen 2016/17 op de tweede plaats, waarna hij ook met de Duitse club de Champions League inging. Forsberg speelde op 15 september 2018 thuis tegen Hannover 96 zijn honderdste competitiewedstrijd voor RB Leipzig. Hij verlengde in februari 2017 zijn contract bij de club tot medio 2022.[2] Hij won tweemaal de beker met Leipzig, in het seizoen 2021/22 en 2022/23. Hij kwam in totaal tot 325 wedstrijden, 71 goals en 68 assists. Daarmee staat hij tweede op de lijst van meeste wedstrijden in de clubgeschiedenis achter Yussuf Poulsen, vierde op de all-time topscorerslijst en eerste op de lijst van meeste assists.
New York Red Bulls
In de winter van 2024 tekende Forsberg een contract voor drie seizoenen bij New York Red Bulls, tot het einde van 2026. In zijn eerste seizoen maakte hij elf goals in 21 competitiewedstrijden.
Forsberg maakte op 17 januari 2014 onder bondscoach Erik Hamrén zijn debuut in het Zweeds voetbalelftal, in een met 2–1 gewonnen oefeninterland tegen Moldavië. Hij speelde acht wedstrijden in het kwalificatietoernooi voor het Europees kampioenschap voetbal 2016, waaronder beide play-offduels in november 2015 tegen Denemarken. In de heenwedstrijd op 14 november 2015 maakte Forsberg in de 45ste minuut op aangeven van Mikael Lustig het openingsdoelpunt – en zijn eerste interlanddoelpunt – waarna Zlatan Ibrahimović in de tweede helft de wedstrijd in Zweeds voordeel besliste (2–1). De terugwedstrijd drie dagen later eindigde in een 2–2 gelijkspel, waardoor Zweden zich kwalificeerde voor het toernooi in Frankrijk.[3] Op 11 mei 2016 werd Forsberg opgenomen in de Zweedse selectie voor het toernooi.[4] Zweden werd uitgeschakeld in de groepsfase na nederlagen tegen Italië (0–1) en België (0–1) en een gelijkspel tegen Ierland (1–1). Hij speelde alle drie de wedstrijden vanaf het begin. Forsberg behoorde ook tot de Zweedse selectie op het WK 2018. Bondscoach Janne Andersson zette hem in alle vijf de wedstrijden van de Zweden tijdens dit toernooi in de basis. Hij maakte in de achtste finale tegen Zwitserland het enige doelpunt van de wedstrijd.