His career began at Melleruds IF, where he played for three seasons. During this time he played 38 times, scoring 11 goals. It was scoring 10 of these in the final season that prompted Degerfors IF to sign him for the beginning of the 1996 season. Again, he spent three years at the club, regularly securing a place in the team and a modest supply goals. Having moved out of favour with the team at the back end of the 1998 season, he had an unsuccessful spell at AIK, appearing only 12 times in the league, five of these as a sub.
Djurgårdens IF
In 2000, he moved to Djurgårdens IF, for whom he played until 2004, during which time he saw them claim the Allsvenskan championship in 2002 and 2003, as well as the Swedish Cup in 2002 and 2004. In total he scored 45 goals for Djurgården in 124 appearances.
Johansson was quickly snapped up by Danish Superliga club AaB on 17 July 2007. At AaB, he quickly established himself as a playmaking midfielder. With seven goals in 31 games, he led AaB to the 2007–08 Danish Superliga championship, the first AaB championship since 1999. He helped the team reach the group stage of the 2008–09 UEFA Champions League tournament, and scored in the 3–6 defeat to Villarreal CF. AaB finished third in their group, and moved on to the 2008–09 UEFA Cup, where Johansson scored in the aggregate 6–1 defeat of Deportivo La Coruña. He and AaB also reached the 2009 Danish Cup Final, but lost 0–1 to Copenhagen. Following the sale of Thomas Augustinussen, Johansson was named new AaB team captain in July 2009. With eight goals in 32 games he was the AaB top goalscorer of the 2009–10 Danish Superliga season. As his contract expired in the summer 2010, AaB did not have the financial means to extend it. In June 2010, Johansson signed with Odense Boldklub on a free transfer.
Return to Djurgården and retirement
He scored his first goal in his second spell for Djurgårdens IF in Allsvenskan on 12 May 2013 in the 3–2 victory against Malmö FF. Johansson retired from professional football after the 2014 Allsvenskan season.
International
Johansson started his international career with the Swedish youth selections, including five games for the Sweden national under-21 football team. He made his debut for the Sweden national football team in September 2002 against Latvia. He was called up for the Swedish squad at the 2003 King's Cup, and was a part of the national team during spring 2004, playing his 12th national team game. He was not selected for the 2004 European Championship, and was dropped from the national team during his initial time at Wigan. He was once more a part of the Swedish team in the February 2007 game against Egypt, and played his 13th national team game. While at AaB, he was called up for the Swedish squad to replace Freddie Ljungberg in September 2007. He played his 16th and last national team game in January 2008, before he was dropped from the team again. He impressed Swedish manager Lars Lagerbäck in his Champions League games for AaB, and was called up once more in September 2008, but did not play. Johansson's favored position as an offensive central midfielder did not exist in Lagerbäck's rigid 4–4–2 system, and Johansson's international career suffered as a result.