Olsson begon in 2005 met voetballen bij Högaborgs BK en werd in 2006 opgenomen in de jeugd van Blackburn Rovers. Olsson maakte zijn debuut in het A-elftal van Blackburn tijdens de UEFA Europa League-kwalificaties voor het seizoen 2007/08. Hij viel in voor Stephen Warnock. Olsson maakte zijn Premier League-debuut in een wedstrijd tegen Derby County FC op 30 december 2007. De wedstrijd eindigde in een 2–1 overwinning voor Blackburn.
In 2008 tekende Olsson een nieuw contract bij Blackburn, waardoor hij tot de zomer van 2012 bij de club zou blijven. Op 24 september 2008 maakte hij zijn eerste doelpunt voor Blackburn in een League Cup-wedstrijd tegen Everton FC. Op 23 november 2009 kreeg Olsson in een wedstrijd tegen Tottenham Hotspur FC twee gele kaarten vanwege overtredingen tegen Aaron Lennon. Op 10 februari 2010 maakte hij zijn eerste Premier League-doelpunt,tegen Everton FC. In juni 2010 tekende Olsson een nieuw vijfjarig contract. Hij diende zijn contract niet uit: in juli 2013 maakte Olsson de overstap naar Norwich City. In zijn eerste drie seizoenen bij de club degradeerde hij tweemaal uit de Premier League en promoveerde hij eenmaal uit de Football League Championship.[1]
Hij tekende in januari 2017 een contract tot medio 2019 bij Swansea City, dat hem overnam van Norwich City. In april 2020 sloot hij aan bij Helsingborgs IF. In januari 2021 ging Olsson naar BK Häcken.
Interlandcarrière
Olsson speelde meerdere interlands in het Zweeds voetbalelftal onder 18 en onder 21.[2][3]