Born in Helsingborg, Persson began his career as a youth-team player with Högaborgs BK before moving to Malmö FF in 1992. He made his professional debut in a Swedish Cup game against Landskrona in 1994. Persson moved to the Italian Serie A club Atalanta in 1996. He returned to Sweden after less than two seasons in Italy, having very rarely played for Atalanta's first-team, joining IFK Göteborg in January 1998. Things went little better for him in Sweden. He was often singled out by the media as the main cause of his team's poor performances throughout his two seasons with Göteborg. After the 1998 season he was voted as the "most overrated player" in the Allsvenskan by his fellow players. At the end of the 1999 season, Persson left IFK Göteborg in order to escape the intense scrutiny he had been subjected to. He joined Esbjerg fB, of the Danish Superliga, midway through the league season, at the end of which they were relegated to the Danish 1st Division. Persson stayed with the club and helped them to win the first division championship, and promotion, at the first attempt. In the summer of 2002, after one further season with Esbjerg, Persson moved to Hansa Rostock of the German Bundesliga. Along with Andreas Jakobsson, Marcus Lantz, Peter Wibrån, Magnus Arvidsson and Rade Prica, Persson was one of six Swedes playing for the Mecklenburg club. Under managerArmin Veh he played as a holding midfielder, making 26 appearances in his first season with the club. The following season began with four successive defeats, after which Veh handed in his resignation and was replaced by Juri Schlünz. Schlünz converted Persson from a midfielder into a defender and appointed him as the leader of the team's back four. After making just one substitute appearance in the first six games of the season, Persson went on to start 27 of the last 28 games. He scored his only league goal for Hansa in a 1–1 draw with Borussia Mönchengladbach on 1 November 2003. Hansa finished the season in ninth place. Persson made 30 league starts during the 2004–05 season but was unable to prevent Hansa from finishing second-bottom of the league and being relegated to the 2. Bundesliga. Following Hansa Rostock's relegation, Persson left the club to join Stabæk in Norway's Tippeligaen. Although he had been offered a longer contract, Persson decided to return to Sweden after 18 months in Norway. Persson signed with Landskrona prior to the 2007 Superettan season.
International career
Persson made 27 appearances for the Sweden U21s, scoring eight goals. He also made five appearances for Sweden at junior level, scoring one goal. Persson also made three appearances for the Sweden national football team, all of which came in the 1997 King's Cup. He played in games against Romania and Japan before playing in the final against the hosts Thailand. Persson scored a goal in the final, helping the Swedes to a 3–1 win.