Johnson began his career at Notts County, making his league début in the 1991/92 season at the age of 18, playing 5 games as County were relegated from the First Division, the season before the Premier League was founded. It would be 10 years before Johnson played in the highest league in England again.
Johnson became a first team regular in the following season, playing 37 league games in the 1992/93 season and helping County avoid a second successive relegation. The 1993/94 season was more successful for County as they finished 7th, missing out on the playoffs by three points. In contrast, the 1994/95 season was disastrous. County finished bottom and were relegated to the Second Division (the third tier of English league football). At the end of the season, Johnson left County, joining Birmingham City, who had just been promoted back to the First Division, for £230,000.
Johnson played 33 league games in his first season with Birmingham, helping the club to a safe mid-table position. The 1996/97 season saw Birmingham finish 10th, 5 points off the playoffs. The following season saw Johnson score his first career league goal, in a 2–0 win over Sheffield United on 22 February 1998. Johnson finished the season with 3 goals in 38 league appearances as Birmingham finished 7th, missing out on the playoffs by goal difference. Johnson scored 5 goals in 45 league appearances in the 1998/99 season as Birmingham finished 4th, qualifying for the play-offs. After playing to a 1–1 draw in the play-off semi final, Birmingham lost to Watford, the eventual play-off winners, on penalties.
The 1999–2000 season saw Birmingham again qualify for the play-offs and again fail to reach the final, losing in the semi-finals, this time to Barnsley, 5–2 on aggregate. The 2000–01 season saw Birmingham come close to getting promotion and winning the League Cup. Johnson scored twice in 39 league games as Birmingham again finished 5th, losing 4–2 on penalties after a 2–2 draw in the play-off semi-final against Preston. Birmingham also reached the final of the League Cup, losing 5–4 to Liverpool on penalties after a 1–1 draw.
The 2001/02 season saw Birmingham finally promoted to the Premier League. Johnson scored one goal in 32 appearances as Birmingham finished 5th, beating Millwall 2–1 (on aggregate) in the semi-final and beating Norwich on penalties in the final after a 1–1 draw. The 2002/03 season saw Birmingham finish safely mid-table in their first season back in the top division. However, Johnson found himself out of the first team picture, and only played six league games all season.
Johnson joined Derby on a free transfer in August 2003 after eight seasons with Birmingham. Johnson quickly established himself in the heart of the Derby defence, playing 39 games and scoring once as Derby narrowly avoided relegation from the First Division. The 2004/05 season (the first as The Championship, the new name for the old First Division), was a great success for Derby, as they finished 4th and qualified for the play-offs, though injuries to key players Iñigo Idiakez and Grzegorz Rasiak meant they lost in the play-off semi-final to Preston.
The 2005/06 season saw Johnson named as captain, a role he held until 2006 when he was named club captain. It was a disappointing for Derby as a pre-season change of manager and the sale of several key players meant that the club finished 20th, with Johnson playing 31 games and scoring once. The 2005/06 season began well for Derby. After being top of the table for most of the season, the team slipped away towards the end of the season, finishing third and qualifying for the play-offs. After beating Southampton 3–2 on aggregate in the semi-finals, Derby beat West Bromwich Albion 1–0 in the final. Despite missing the end of the season (including all three play-off games) through injury, Johnson made 29 league appearances, scoring once.
The 2007/08 season saw Johnson, now 34 years old, relegated to 5th choice centre half. Consequently, in September 2007, Johnson joined Sheffield Wednesday on an emergency one-month loan deal. He made his debut on 22 September and made an impact as Wednesday picked up their first points of the season (which was 9 games old) in a 1–0 win against Hull City at Hillsborough. His loan was extended for a third and final month in November 2007, with Johnson playing 13 league games for Wednesday before returning to Derby at the end of December 2007.
On 26 December 2007, Johnson returned to the Derby team to face Liverpool, coming on as a first-half substitute. His return was greeted by Derby fans with cheers and chants of There's only one Michael Johnson. Johnson made 2 further league appearances and came on as a substitute in the cup against Sheffield Wednesday at Hillsborough, where he was greeted by a hero's welcome from the Wednesday fans. He then left to re-join the team where he started his career, Notts County, on loan for the remainder of the season.
On 29 February 2008 Johnson returned to Notts County on loan for the remainder of the 2007/08 season, playing 12 times and scoring once. The goal, against Rochdale on 22 March 2008, was his first league goal in a Notts County shirt, and came some sixteen years after he had made his début for the club. At the end of the season, he agreed a one-year permanent deal with the club following the completion of his Derby contract on 1 July 2008.
Johnson played 29 games and scored 2 goals in the 2008/09 season as Notts County finished 21st. He played the final league game of his career in a 3–0 defeat to Dagenham & Redbridge on 25 April 2009, announcing his retirement from professional football at the end of his contract in May 2009, and remained at the club taking over the role of Youth Team Manager from the 2009/10 season.
Johnson was a fans' favourite at all his clubs, most notably Birmingham, where he picked up the nickname "Magic" (in reference to Earvin "Magic" Johnson, the American basketball player), for his often immense performances. During his career he was known as a quick, clever centre-half. Johnson was known for his incredible leap, which scored him a number of goals for Birmingham.
When Notts County sacked manager Ian McParland, Johnson took over briefly as caretaker manager alongside Dave Kevan. During their brief spell at County, they drew against Rotherham United and beat Crewe Alexandra 2–0. When Notts County brought in Hans Backe as manager, Johnson returned to his role as the Youth team Manager. A succession of managers came and went over a short period of time, however Johnson was dismissed when Paul Ince was sacked and replaced by Martin Allen.
Johnson took up a coaching position with Cardiff City in July 2015, as assistant to under-21 team manager Kevin Nicholson.
A Christian, Johnson told a BBC interview in 2012 that he would not support a Football Association (FA) campaign against homophobia "because of my beliefs, because of the Bible that I read, in the Bible it does state that homosexuality is detestable unto the Lord." In January 2014 the interview was referenced again when Johnson was appointed to the FA's Inclusion Advisory Board. He claimed that his opinion had shifted in the intervening period but nevertheless on 7 January 2014 he announced his intention to step down from the position. Since January 2014, Johnson as always declared his innocence and said he is not homophobic. Johnson embarked on numerous workshops with the PFA, Premier League, Kick it Out, He now represents these organisations and will travel up and down the UK talking to Professional footballers, academy staff, players and parents around equality issues with homophobia being high on the agenda. Johnson as also visited certain European countries and the USA were he has spoke in seminars around the issues of diversity. Johnson is a devout Christian.