Fransson played bandy in Kalix; his team won the Swedish championship for 13-year-olds in 1998. He attributes his skating ability to his bandy background. In the 2000–01 season, he represented Norrbotten in the TV-pucken tournament, and played for Kalix HF in Division 1. For the 2001–02 season, Fransson played for Luleå HF in the J20 SuperElitjunior hockey league. For the 2002–03 season, Fransson made his Elitserien debut for Luleå HF, but only played three games because of a groin injury. For the 2003–04 season, he returned to the Luleå' roster, and was nominated for Elitserien Rookie of the Year. In his first playoff game, Fransson suffered a concussion after being checked by Färjestads BK's Peter Nordström. He returned to play one game in the series, but his team was eliminated from the playoffs. He was praised as having a bright future. His 2004–05 season was not as strong as his rookie year, and in the following season, he struggled, and the team did not re-sign him. He and his fellow Luleå teammate Karl Fabricius signed with Frölunda HC. He began the 2006–07 season well despite his team struggling. After Per Bäckman replaced Stephan Lundh as coach, Fransson saw less ice time, and was eventually loaned to Ässät, in the SM-liiga league in Finland. In 2007, Fransson was traded to Linköpings HC for Oscar Ackeström. Although he only played eight regular season games and 15 playoff games without scoring a point, his new team reached the Swedish Championship finals, where they lost to Modo Hockey. For the 2007–08 season he played 48 games, scoring a career high five goals and fourteen points. He also made his debut for Tre Kronor. Fransson helped Linköping reach the Swedish Championship finals for the second year in a row; the team blew a 2–0 series lead, and eventually lost to HV71 2–4. For the 2008–09 season, Fransson did not sustain his success; he was released in January, and signed with HC Lugano of the SwissNational League A, where he scored two goals and logged five points in seven regular games, and two goals in four playoff games. Fransson returned to Luleå for the 2009–10 season, amidst some criticism over his past performance, but by mid-December, he had achieved his career best in goals and points. At the end of the season, he had played 54 games, logging 30 points and 11 goals. He was offered a five-year contract to play for Luleå, but shortly afterward, he used a contract clause to sign with the HC Dinamo Minsk of the Kontinental Hockey League in Russia, and a few weeks later Fransson signed his third contract of the off-season with the Los Angeles Kings of the National Hockey League. On October 13, 2010, Fransson was loaned by the Kings to SKA St. Petersburg in Russia. where he played the rest of the 2010–11 season. On August 3, 2011, he rejoined Luleå HF, where he stayed until the remainder of the 2013-14 season. He then headed to Switzerland, signing with the Rapperswil-Jona Lakers of the top-flight National League A for 2014-15, before moving on to fellow NLA team Genève-Servette HC for 2015–16. His tenure with Geneva ended at the conclusion of the 2019 playoffs. Fransson played 154 regular season games with Geneva, putting up 74 points, and 25 playoffs games over 4 seasons. As a free agent, Fransson returned to his homeland and the SHL, agreeing to a four-year contract with newly promoted Leksands IF on April 29, 2019.