Granqvist begynte sin fotballkarriere hos sin lokale klubb Påarps GIF før han i 2004 meldte overgang til Helsingborgs IF, hvor han fikk sin seriedebut i Allsvenskan samme år. I 2006 hadde han etablert seg på førstelaget og fått vervet som lagkaptein. I 2006 vant Helsingborgs IF den Svenska Cupen med 2–0 over Gefle IF, hvor Granqvist var kaptein og hvor laget bestod av blant andre storspillere som Henrik Larsson, Andreas Jakobsson og Daniel Andersson.
Wigan
I januar 2007 ble Granqvist lånt ut til den engelske klubben Wigan Athletic FC[6], og etter å ha oppholdt seg i klubben ut vårsesongen signerte han for Wigan på permanent basis sommeren 2007, hvor han skrev under en toårskontrakt på en overgangssum verdt angivelig £750 000 pund.[7] Granqvist spilte deretter tolv kamper i første halvdel av 2007/2008-sesongen, men klarte ikke å etablere seg på førstelaget og ble følgelig lånt tilbake til moderklubben Helsingborgs IF fra mars til juni 2008.[8]
Groningen
Etter å ha returnert til England fra sitt låneopphold ble han solgt fra Wigan til den nederlandske klubben FC Groningen, hvor han skrev under på en fireårskontrakt på en overgangssum verdt £600 000 pund.[9] Hos Groningen fikk han spilletid og etablerte seg på førstelaget, og i 2009/2010-sesongen ble han kåret til årets spiller i Groningen av klubbens tilhengere. I 2010/2011-sesongen ble han også utnevnt til lagkaptein, og ledet klubben bestående av flere svenske spillere som Fredrik Stenman, Marcus Berg og Petter Andersson.
Genoa
Den 15. juni 2011 ble Granqvist solgt til den italienske klubben Genoa CFC på en overgangssum verdt to millioner euro og at han hadde skrevet under på en fireårskontrakt for klubben.[10] I hans første sesong for Genoa spilte han 28 seriekamper og scoret ett mål.
Krasnodar
Den 16. august 2013 meldte Granqvist overgang fra Genoa til den russiske klubben FK Krasnodar på en overgangssum verdt 46 millioner svenske kroner, noe som gjorde han til den nest dyreste svenske forsvarsspilleren noensinne etter Patrik Anderssons overgang i 2001.[11]
19. mai 2016 skrev han under en ny kontrakt med Krasnodar til 30. juni 2018.[12]
Landslagskarriere
Granqvist fikk sin landslagsdebut for det svenske herrelandslaget i en vennskapskamp mot Jordan den 23. januar 2006 (0–0). Hans første scoring for Sverige kom i kampen mot San Marino den 7. september 2010 (6–0), da han kom inn som innbytter for en utvist Olof Mellberg. Han ble tatt ut i den svenske troppen til EM i fotball 2008, hvor han var ubrukt reserve og ikke fikk spille noen av Sveriges gruppespillkamper. Granqvist ble på nytt tatt ut til EM i fotball 2012 av landslagstrener Erik Hamrén.[13]