Johan Franzén begann seine Karriere 1994 in der viertklassigen Division 2 in Schweden bei Boro/Vetlanda HC, wo er sich in den ersten zwei Jahren eher unauffällig verhielt. 1996 stieg Boro/Vetlanda in die fünfte Liga ab, wo Franzén schließlich seine Scorerfähigkeiten unter Beweis stellen konnte und in den folgenden zwei Saisons 44 Tore erzielte und 16 weitere vorbereitete. In die Saison 1998/99 war er mit 23 Toren in den ersten zehn Spielen gestartet, jedoch wurde er für den Rest der Saison gesperrt, als er einen Schiedsrichter umgerammt hatte.
1999 wechselte Franzén in die zweitklassige Allsvenskan, wo er für Tranås AIF aufs Eis ging und eine gute Saison mit 26 Punkten in 37 Spielen hatte. Daran konnte er im Jahr darauf anknüpfen, als er innerhalb der Liga zum Linköpings HC gewechselt war, mit denen er direkt in die Elitserien aufstieg. In den ersten zwei Spielzeiten in der Erstklassigkeit konnte Franzén nur vier Tore erzielen und sammelte insgesamt nur 14 Scorerpunkte. Zudem musste Linköpings 2003 in die Abstiegsrunde, konnte dort aber den Klassenerhalt sichern.
In der Saison 2003/04 gelang Franzén schließlich der Durchbruch in der Elitserien, als er in 49 Ligaspielen 30 Punkte erzielte und außerdem die Plus/Minus-Wertung gewann. Durch die guten Leistungen machte er auch international auf sich aufmerksam und wurde von den Detroit Red Wings in der dritten Runde des NHL Entry Draft 2004 an Position 97 ausgewählt.
Er spielte noch ein Jahr in der Elitserien und wechselte dann im Sommer 2005 zu den Detroit Red Wings, wo er die komplette Saison 2005/06 in der NHL verbrachte und in 80 Spielen auf 16 Punkte kam. Nach der Saison wurde er mit dem schwedischen NationalteamWeltmeister.
Im August 2006 erhielt Franzén einen neuen Vertrag bei den Red Wings über drei Jahre und konnte sich 2006/07 im Vergleich zum Vorjahr steigern und erreichte 30 Scorerpunkte. In den Playoffs rückte er in der ersten Runde gegen die Calgary Flames ins Rampenlicht, als er im sechsten Spiel der Serie den Siegtreffer erzielte und somit die Red Wings in die nächste Runde führte. Detroit scheiterte schließlich im Finale der Western Conference an den Anaheim Ducks.
Während der Saison 2007/08 spielte Franzén hauptsächlich in defensiv ausgerichteten Formationen und konnte daher im Großteil der Spielzeit nur selten vor dem Tor Akzente setzen. Erst im März 2008 rückte er zeitweise wegen verletzungsbedingter Ausfälle in die erste Angriffsreihe und schoss innerhalb von 13 Spielen 14 Tore, konnte sich somit vor allem im Überzahlspiel als adäquater Ersatzmann für Powerplay-Spezialist Tomas Holmström empfehlen. Die Saison schloss er schließlich mit 27 Toren als drittbester Torschütze der Red Wings ab.
Auch in den Playoffs konnte er seine guten Leistungen fortsetzen und war anfangs bester Stürmer der Red Wings mit elf Toren in den ersten zehn Spielen, darunter neun Tore in der vier Spiele dauernden Zweitrunden-Serie gegen die Colorado Avalanche, womit er einen neuen NHL-Rekord aufstellte. Zudem konnte er als erster Spieler seit dem Finnen Jari Kurri im Jahr 1985 zwei Hattricks in einer Serie erzielen. Nachdem er auch im ersten Spiel des Conference-Finales gegen die Dallas Stars einen Treffer beigesteuert hatte, musste er jedoch aufgrund von Symptomen einer Gehirnerschütterung für sechs Spiele pausieren. Franzén kehrte schließlich in der Finalserie gegen die Pittsburgh Penguins zurück und half beim Gewinn des Stanley Cup. Am Ende der Playoffs war er zusammen mit Mannschaftskamerad und Landsmann Henrik Zetterberg bester Torschütze mit je 13 Toren.
In der Saison 2010/11 gelang es Franzén am 2. Februar 2011 beim 7:5-Sieg der Red Wings gegen die Ottawa Senators, als erster Spieler seit Marián Gáborík am 20. Dezember 2007, fünf Tore in einem Spiel zu erzielen.[1]
Aufgrund mehrerer Gehirnerschütterungen absolvierte Franzén im Oktober 2015 sein letztes Pflichtspiel und fiel seither infolgedessen (chronisch-traumatische Enzephalopathie) aus. Es gilt als unwahrscheinlich, dass der Schwede jemals in den Profisport zurückkehrt. Sein Vertrag in Detroit ist noch bis zum Ende der Spielzeit 2019/20 gültig.
(Legende zur Spielerstatistik: Sp oder GP = absolvierte Spiele; T oder G = erzielte Tore; V oder A = erzielte Assists; Pkt oder Pts = erzielte Scorerpunkte; SM oder PIM = erhaltene Strafminuten; +/− = Plus/Minus-Bilanz; PP = erzielte Überzahltore; SH = erzielte Unterzahltore; GW = erzielte Siegtore; 1Play-downs/Relegation; Kursiv: Statistik nicht vollständig)