Karimi's professional career began with Fath Tehran, where he made his first-team debut in 1996 aged 18. He then played three seasons with Persepolis, winning the Iranian league twice and the Hazfi Cup once with the club. In July 2001 Karimi signed a two-year contract with UAE Pro League club Al-Ahli Dubai.[6] While an Al-Ahli player, Karimi won two cup titles, and was the top-goalscorer in the 2003–04 season, an impressive feat for a midfielder. After leaving the club in 2005 aged-26, Karimi made a long-awaited move to Europe to play for Bayern Munich. At the club he had relative success, winning both the Bundesliga and the DFB-Pokal in 2005–06 season. Later in his career, he would join up again with former coach Felix Magath and win a second German Cup with Schalke 04. Karimi ended his playing career in Iran with Persepolis and Tractor Sazi, and with the latter won the Hazfi Cup in the final season of his career.

In international football, Karimi made his Iran debut on 13 October 1998, at the age of 19. He made 127 career appearances in total, appearing at five major tournaments including 1998 Asian Games, 2000, 2004, and 2007 Asian Cups and 2006 FIFA World Cup. Renowned for his on-the-ball skill, dribbling runs and playmaking ability, he was often referred to as the Asian Maradona[7] and The Magician. He was believed to be one of Asia's greatest players, and is often listed as one of the greatest Iranian players of all-time.[8]

In 1998, Karimi joined Persepolis football club, which won the domestic double in 1999 and the championship again in 2000. He attended a trial with Perugia Calcio, but the transfer was aborted when Perugia deemed the transfer fee too high.[9] There was also reportedly an offer from Spain's Atlético Madrid who were willing to pay Karimi £4.3 million in a four-year contract, but Karimi opted for United Arab Emirates side Al-Ahli because he wanted to stay close to home.[10][11]

On 3 May 2005, Bundesliga champions Bayern Munich's website announced that they signed a one-year contract with Karimi who became the third Iranian after Ali Daei and Vahid Hashemian to try his luck with Bayern.[12][13] In October 2004, Iran hosted Germany in a friendly game in which Karimi played. The magazine kicker picked Karimi as the man of the match. FC Bayern's scouts studied Karimi in Dubai closer and came back with a recommendation not to sign the player due to doubts over his fitness. Felix Magath decided to go ahead with the signing despite the negative recommendations.[14]

On 13 August 2005, Karimi made his starting debut for Bayern when Felix Magath put him on the starting line-up of a 5–2 victory against Bayer Leverkusen on the second day of Bundesliga, in which he played on the left side of the midfield. Karimi made an assist to Roy Makaay for Bayern's second goal followed by his first goal in the Bundesliga.[15] He came off in the 58th minute for Brazilian international Zé Roberto and received a warm ovation from the traveling Munich fans.[16] Karimi scored on his first UEFA Champions League appearance against Rapid Vienna on 22 November 2005.[17] On 17 December 2005, Karimi played for 88 minutes and scored a goal in Bayern's 2–1 win over Borussia Dortmund.[18]

Karimi made his 25th appearance for Bayern on 4 March 2006 against Hamburg, which resulted in an automatic 12-month extension to his one-year contract that would expire on 30 June 2007. He unfortunately injured his ankle in the same game, which sidelined him for six weeks.[19]

In the 2006–07 season, Karimi was often kept on the bench. Karimi expressed his belief that it would be his last season with Bayern and his contract would not be renewed. It was confirmed that Red Bull Salzburg offered Karimi a contract, which he rejected.[20]Al-Ahli also made an official bid for him, which was eventually vetoed by Felix Magath as Munich's midfield was depleted by the sudden retirement of Sebastian Deisler.[21] On 29 May 2007, Bayern Munich announced Karimi would be leaving the club, though his new club was not yet known.

On 3 July 2007, Karimi announced that he had signed a two-year deal with Qatar Sports Club. Karimi was believed to have put pen to a contract worth around £3.2 million, with a clause allowing him to return to Europe at any time.[22]

Persepolis' then chairman, Dariush Mostafavi, reached an agreement with Karimi after a one-hour-long telephone conversation. Persepolis would have to pay Al-Sailiyah in order to release Karimi from his contract. Mostafavi claimed the release fee was around US$310,000. Karimi joined Persepolis on a loan,[24] and signed with Persepolis on a one-year contract on 6 September 2008.[25]

Karimi scored his first goal since his return to Persepolis in the Tehran derby. With Esteghlal leading 1–0, Karimi equalized for Persepolis two minutes from time.[26] On 9 October 2008, Karimi scored a hat trick against Abumoslem but could not prevent Persepolis losing 3–4.[27]

However, Karimi's contract was not extended reportedly because of a strained relationship with Persepolis chief executive Abbas Ansarifard.[28] While Ansarifard claimed that the club offered Karimi a contract but he did not show up, Karimi claimed that Persepolis kept him waiting for four weeks for nothing.[29]

Karimi joined newly promoted Steel Azin on 29 July 2009 on a one-year deal. He would reportedly be paid US$400,000 for the season.[30]

After joining Steel Azin, Karimi scored for four consecutive matches at the start of the season. On 14 August 2009, he scored the second goal in Steel Azin's 4–3 win over Saba.[31] He scored a brace against Shahin in Steel Azin's 2–1 victory.[32] On 4 December 2009, Karimi converted a penalty in the 52nd minute against Pas FC to score his 11th goal of the season.[33] On 6 March 2010, during his team's match against Saipa, Karimi was sent off for pushing Majid Ayoubi after Ayoubi had fouled him.[34]

In January 2010, it was reported that Al-Ahli made an offer of US$500,000 to sign Karimi on a loan deal until the end of the 2009–10 season, which was rejected by Steel Azin.[35]

Karimi was sacked by the club in August 2010 for failure to observe the requirement to fast during Ramadan, but was reinstated a few days later after paying a fine. The player maintained that he had not shown disrespect to Islam.[36]

Karimi signed a five-month deal for Schalke n 31 January 2011 upon passing a medical examination.[37][38] He made his first appearance for the German club on 5 April 2011, coming on for Raúl in the second half in a Champions League quarter final match against Inter Milan before coming on as substitute against 1. FC Kaiserslautern in the German Bundesliga in his second and final match for Schalke. He won the German cup for the second time before the end of his contract.

On 15 June 2011, Persepolis chairman Habib Kashani announced that they reached an agreement with Karimi and he will be play for Persepolis in 2011–12 Persian Gulf Cup and 2011–12 Hazfi Cup.[39] This is the second time that Karimi is back to his native club, Persepolis. Karimi was also appointed as Club captain. He made his debut in match against Malavan and scored his first goal in the season for Persepolis in match against Shahrdari Tabriz. He extended his contract with Persepolis for another season on 18 June 2012. He was injured a few times during the season and was not able to perform very well and at the end of the season he announced his retirement from football.

He was also one of Iran's main players in its 2002 FIFA World Cup qualification campaign. In 2001, after losing to Bahrain and drawing with Thailand, Iran finished second in their qualifying group and had to play a home-and-away play-off with the Republic of Ireland for a spot at the 2002 World Cup. Karimi started as an attacking midfielder in the first game in Dublin, and used his acceleration on the break and his dribbling to attack Ireland's defence. However, he was also off target on a number of occasions, and Iran lost the match 2–0. They won the return leg 1–0 but missed out on the final.[43]

His performance in the Iran-Germany friendly game for Bam victims held in Azadi Stadium in Tehran in October 2004 was said to be the reason behind Bayern's interest in the player.

Coming off a serious ankle injury, Karimi had a poor World Cup finals at Germany 2006.[45] He was unable to exert much influence on proceedings as the Iranians lost 1–3 to Mexico and 0–2 to Portugal. He was substituted in the 65th minute of the Portugal game and kicked the team's sports bags by the dugout. Iran's then manager Branko Ivankovic said he may drop Karimi in the upcoming game due to disciplinary reasons.[46] Karimi did not play in the 1–1 draw against Angola, but Ivankovic attributed Karimi's omission to his refusal to play because of an injury.[47]

In October 2008, Karimi retired from Team Melli. Ali Daei, the then Iran football coach, said Karimi will never be called up again.[50] In February 2009, Karimi announced that he was ready again to serve his country, if he was to be picked by Team Melli coach, Afshin Ghotbi.

He played in 2010 FIFA World Cup qualification for Team Melli and on 10 June 2009 Karimi scored in a 1–0 victory over U.A.E. to keep Iran's 2010 World Cup qualifying hopes alive. On 17 June 2009, he played in Iran's 1–1 draw with South Korea, a result that eliminated Iran from the 2010 World Cup finals. During the match, a number of Iranian players, including Karimi, wore green wristbands, which were interpreted to be a show of support for Iranian opposition leader Hossein Mousavi, who accused the Iranian government of vote rigging the election on 12 June. Western media reported after the game that the players who wore the green wrsitbands have been banned from the team for life, while a newspaper in Iran reported that the players concerned have retired.[51] On 24 June 2009, FIFA wrote to Iran's football federation asking for clarification on the situation. The Iranian football federation replied that no disciplinary action has been taken against any player.[52] On 3 March 2010, he returned for the 2011 AFC Asian Cup qualification match against Thailand.[53] Karimi was not picked to be part of Iran's 2011 AFC Asian Cup squad as Ghotbi decided to use younger players in his position.

He was invited to the national football team again by Carlos Queiroz in 2011 to play in the 2014 FIFA World Cup qualification and played for the team until his retirement in 2013. Queiroz later announced that Karimi is one of his best players during his coaching times. He is currently the third most capped player and the third highest scorer of Iran.

On 27 March 2014, Carlos Queiroz announced in an interview that Karimi can return to the national team and will be using Karimi in the 2014 FIFA World Cup, if he accepts. However, Karimi was not included in Queiroz's final 30-man squad for the World Cup.