He moved into the Premier League by signing for Birmingham City in 2009 for £5 million, with whom he won the 2011 League Cup. He departed Birmingham in 2011 after their relegation to join Midlands neighbours Wolverhampton Wanderers, with whom he suffered two further consecutive relegations, leading to his exclusion from first team involvement. After loan spells with Sheffield Wednesday and West Ham United, Johnson left Wolves by mutual consent, and spent the latter part of the 2014–15 season with Charlton Athletic. He played for Indian Super League club Pune City in 2015 before returning to Charlton in January 2016. Released at the end of the season, Johnson signed a short-term contract with Bromley in October 2017.