On 1 July 2016, Karimi joined Croatian champions Dinamo Zagreb on a five-year contract for a reported US$400,000 transfer fee.[3] He is the first Iranian to play in Croatian Prva HNL. Karimi made his preseason debut on 2 July 2016, coming on as a second-half substitute against Romanian club CS Pandurii Târgu Jiu.[4]
Loan to Lokomotiva
Karimi joined Dinamo Zagreb's feeder club Lokomotiva in January 2017 on a 6-month loan. He finally got a chance to show off his power and control in the midfield as he started six games for Lokomotiva, set up multiple goals and scored his first goal in the Croatian league for the NK Lokomotiva on 26 April 2017 in a 1–0 league victory against Istra 1961.
Esteghlal
On 15 July 2018, Karimi joined Esteghlal signing a one-year contract with the club.[5]
Qatar SC
On 1 November 2020, Karimi joined Qatar SC, signing a one-year contract with the club.
Kayserispor
In July 2020, Karimi joined Kayseispor as a free agent.
Karimi was called to the national team in March 2014 but did not play a game. He was called up again to the senior Iran squad for a 2018 FIFA World Cup qualifier against India in September 2015.[8] He made his debut against Papua New Guinea on 10 November 2016 in a friendly match.[citation needed]
In May 2018, he was named in Iran's preliminary squad for the 2018 World Cup in Russia.[9] but did not make the final 23 because of injury.[10] He was included in the final list for the 2022 World Cup by Carlos Queiroz.