Born in Påarp, Granqvist started his career with his local club, Påarps GIF. He later transferred to Helsingborgs IF and he made his debut in Allsvenskan, 2004. Two years later he was team captain, when the club won its third Swedish Cup title, beating Gefle with 2–0. The victorious Helsingborg side also contained Swedish internationals Henrik Larsson and Andreas Jakobsson as well as former Hibernian goalkeeper Daniel Andersson.
In January 2007, he completed a loan move to Wigan Athletic with a view to a permanent deal in the summer.
On 19 June 2007, Granqvist signed a two-year deal with Wigan, for a fee reported to be around £750,000. On 12 March 2008, Granqvist returned to Helsingborg on a loan deal until the end of the English season in June.
On 9 July 2008, Granqvist signed a four-year contract with Dutch club, Groningen, with Wigan receiving a fee of around £600,000.
On 13 September 2008, Granqvist scored after a 65-metre solo run, a remarkable feat, which he again managed to accomplish in the last match of the regular season on 10 May 2009.
On 15 June 2011, Groningen sold Granqvist to Genoa for €2 million. The Swedish international has signed a four-year contract with the Italian club.
On 16 August 2013, Granqvist moved from Genoa to Russian Premier League side Krasnodar.
Granqvist has played for the Swedish national team, and, in May 2008, he was included in Sweden's 23-men squad for UEFA Euro 2008. However, he was an unused substitute in all three of Sweden's games. On July 6, 2016 Granqvist was appointed captain of the Swedish national team by the new manager Janne Andersson. Granqvist succeeded Zlatan Ibrahimović due to his retirement after the UEFA Euro 2016.As of 21 May 2017
Statistics accurate as of 3 September 2017Scores and results list Sweden's tally first.