He made his senior league debut in the Esiliiga on 8 April 2001, playing for Tulevik's reserve team Elva and scoring the winning goal against Sillamäe Kalev in a 2–1 home victory.
He moved to Tulevik's first team in 2002 and made his debut in the Meistriliiga on 31 March 2002, at age 16, in a goalless draw against Levadia.
[18] He made his debut for the club on 4 February 2009, in a 1–0 home victory over Roda JC when he came on as a 60th-minute substitute for Kees Luijckx.
[4][22] On 29 September 2009, Klavan became the first Estonian to play in the UEFA Champions League group stage when he came on as an 82nd-minute substitute for Sébastien Pocognoli in a 1–1 home draw against Standard Liège.
[23][24] He saw limited playing time under managers Ronald Koeman and Dick Advocaat, making only 11 league appearances in the 2009–10 season, before becoming a regular starter for AZ under Gertjan Verbeek.
On 29 July 2010, Klavan scored his first goal for AZ in a 2–0 home win against IFK Göteborg in the third qualifying round of the UEFA Europa League.
[25] He scored the third goal in a 3–0 home victory over FC Eindhoven on 10 November 2010, in the fourth round of the KNVB Cup.
[26] On 27 October 2011, Klavan scored his side's second goal in the 3–2 extra time win against FC Dordrecht in the third round of the KNVB Cup.
[27] On 2 July 2012, Klavan signed a two-year contract with German club FC Augsburg for an undisclosed fee.
[40] He made eight appearances in the 2017–18 UEFA Champions League and was an unused substitute in Liverpool's 3–1 loss to Real Madrid in the final of the tournament.
[44] On 1 July 2021, Klavan signed for Estonian Meistriliiga club Paide Linnameeskond, returning to Estonia after 17 years abroad.
Klavan made his senior international debut for Estonia on 3 July 2003, at age 17, in 5–1 loss to Lithuania at the 2003 Baltic Cup.
Klavan made his 50th appearance for the national team on 11 October 2008, in a 3–0 home defeat to Spain in a qualification match for the 2010 FIFA World Cup.
He played in both matches against the Republic of Ireland in the UEFA Euro 2012 qualifying play-offs as Estonia lost 5–1 on aggregate.
On 27 March 2015, Klavan made his 100th appearance for Estonia, in a 0–3 away loss to Switzerland in a UEFA Euro 2016 qualifying match.
[59] Klavan announced the Estonian jury points at the grand final of Eurovision Song Contest 2023 as the country's spokesperson.