Efter at have begyndt sin karriere hosIFK Eskilstuna, skiftede han som 16-årig i 2001 tilArsenal.[1] Han gjorde sin førsteholdsdebut for Arsenal i oktober 2004.[2]
Larsson skiftede i august 2006 tilBirmingham City på en lejeaftale med muligheden for at gøre aftalen permanent.[3] Efter at have imponeret i sin første halvsæson med klubben, besluttede Birmingham City at gøre aftalen fast, og han skiftede i januar 2007 permanent til klubben.[4]
Larsson imponerede især i 2007-08 sæsonen, hvor at trods han ikke kunne rede Birmingham fra nedrykning, var han den bedste frisparkskytte i ligaen, da han scorede 6 mål på frispark i sæsonen.[5]
Han spillede mere end 200 kampe for Birmingham City på tværs alle turneringer, før han forlod klubben efter udgangen af 2010-11 sæsonen.[2]
Larsson skiftede i juni 2011 tilSunderland efter hans kontrakt med Birmingham City have udløbet.[6] Han forsatte med at være blandt ligaens bedste frisparkstagere, og blev i oktober af 2011 kaldet 'ligaens bedste frisparkstager' af hans tidligere chef,Arsène Wenger.[7]
Han spillede for Sunderland frem til 2017, og optrådte mere end 200 gange forThe Black Cats.[2]
Larsson vendte hjem til Sverige i juni 2018, da han skiftede til AIK.[9] Han var i sin debutsæson med til at vinde det svenske mesterskab med klubben.[10]
Ved udgangen af 2022 sæsonen annoncerede Larsson, at han ville stoppe sin spillerkarriere.[11]
Larsson debuterede for Sveriges landshold den 6. februar 2008. Han var del af Sveriges trupper tilEM i 2008,2012,2016 og2020 og tilVM i 2018.[12]
Efter europamesterskabet i 2020 annonceret Larsson, at han stoppede på det svenske landshold. Han nåede at spille 133 kampe og scorede 10 mål for landsholdet.[13]