Toivonen debuteerde in het profvoetbal bijDegerfors IF, waarmee hij in 2004 promoveerde naar deSuperettan doorUmeå FC in deplay-offs te verslaan.[3] Mede dankzij Toivonen werd het jaar daarna degradatie voorkomen.
In 2006 stapte Toivonen over naarÖrgryte IS voor een geschatte transfersom van 150.000 euro.<[4] Toivonen zou één seizoen spelen voor de club uitGöteborg. Toen de club aan het eind van het seizoen degradeerde uit deAllsvenskan, stapte hij over naarMalmö FF.
Toch was zijn spel opgevallen bijMalmö FF, dat hem voor circa 1,1 miljoen euro overnam. Hiermee was hij naAfonso Alves (1,3 miljoen) de duurste transfer in de geschiedenis van Malmö. Bij Malmö brak hij definitief door, waardoor hij voor het nationale elftal vanZweden werd geselecteerd.
PSV volgde Toivonen in het najaar van 2008 en wilde hem naarEindhoven halen. Malmö FF wees het eerste bod dat PSV uitbracht van de hand.[5] Op 14 januari 2009 kwamen PSV en Malmö FF alsnog tot een akkoord. Voor vier miljoen euro verhuisde hij toch van Malmö FF naar PSV waar hij op 15 januari 2009 een contract tekende tot medio 2012 met een optie op nog twee seizoenen.[6][7] In het resterende halve seizoen van de jaargang 2008/09 speelde Toivonen steevast als diepste spits in de basis bij PSV. In veertien wedstrijden scoorde hij zes doelpunten en bereidde hij er vier voor. Op 8 november 2009 scoorde hij vier keer in de uitwedstrijd tegenADO Den Haag. Hij werd daarmee de 21e speler in de historie van PSV bij wie dit lukte en de vierde in de laatste tien jaar, naMateja Kežman,Mark van Bommel enArnold Bruggink. Toivonen maakte op zondag 5 mei 2013 thuis tegenN.E.C. het honderdste doelpunt dat PSV in het seizoen 2012/13 produceerde.[8]
Toivonen werd in juli 2011 door PSV-coachFred Rutten benoemd tot aanvoerder. Daarmee was hij de opvolger vanOrlando Engelaar.[9] Na vier speelronden in het seizoen 2011/12 werd de optie gelicht die bij Toivonens komst naar PSV in zijn contract was opgenomen. Daarmee werd de looptijd van zijn verbintenis met twee jaar verlengd tot aan de zomer van 2014.
In de mei 2013 kwam Toivonen in conflict met de club over zijn, nog een jaar doorlopende, contract. Hij werd voor de keuze gesteld om bij te tekenen of mee te werken aan een transfer. Als hij niet zou bijtekenen, zou hij geen deel meer uitmaken van de a-selectie.[10] In de zomer kwam PSV tot overeenstemming metNorwich City FC over een transfer, maar Toivonen weigerde op de aanbieding van de club in te gaan, omdat hij deze overgang geen stap vooruit vond.[11] Hierop meldde hij zich weer bij PSV, waar hij kwam te spelen bijJong PSV. Kort hierop wisselde de Zweed zijn zaakwaarnemerMartin Dahlin in voorMino Raiola.
In september werd hij hierna door trainerPhillip Cocu, na een gesprek, weer toegelaten tot de a-selectie.[12] Nadat zijn directe concurrent voor een plaats op het middenveldGeorginio Wijnaldum geblesseerd raakte, keerde hij terug in de basisopstelling van PSV. Op 27 oktober 2013 was Toivonen enige minuten keeper van PSV, in een verloren uitwedstrijd bijRoda JC (2-1), nadat keeperPrzemysław Tytoń geblesseerd het veld moest verlaten en trainer Cocu al drie keer gewisseld had. Toivonen keepte de laatste drie minuten van de blessuretijd, toen het al 2-1 stond. In november meldde PSV dat het een principeakkoord had bereikt met Toivonen over een eenjarige contractverlenging, als een transfer in de winterstop uit zou blijven.[13] Zover kwam het niet, want op 20 januari, kort na de start van de tweede competitiehelft verkaste Toivonen voor een transferbedrag van zo'n 2,5 miljoen euro naarStade Rennais.[14]
Toivonen kwam vaak negatief in het nieuws vanwege het irriteren van tegenstanders, kaarten aannaaien, en het uitdelen van ellebogen.[15] Met zijn vertrek naar Stade Rennais verdween daarom de volgens velen 'meest irritante speler van de Eredivisie' uit Nederland.[16][17]
In zijn eerste seizoen bij Stade Rennes speelde Toivonen vijftien competitiewedstrijden waarin hij zeven keer scoorde. Hij bereikte met de Franse club de finale van deCoupe de France, die met 2–0 verloren ging tegenEA Guingamp.[18][19] In zijn tweede seizoen kwam Toivonen tot dertig optredens in de hoofdmacht van Stade Rennes, waarin hij zeven keer wist te scoren. Stade Rennais verhuurde Toivonen in augustus 2015 voor een jaar aanSunderland. Hier kwam hij weer te voetballen onder coachDick Advocaat en met aanvallerJeremain Lens, die hij allebei nog kende van PSV. Een dag na zijn komst naar Sunderland debuteerde Toivonen voor de ploeg in dePremier League, uit tegenAston Villa. De Zweed viel in dat duel na 45 minuten in voorDanny Graham. Hij gaf die wedstrijd in de 52ste minuut een assist op Lens, die daarmee de 2–2 binnenschoot, wat ook de eindstand was. Het lukte Toivonen niet om een basisplaats te veroveren bij Sunderland. Hij speelde dat jaar twaalf competitiewedstrijden en scoorde daarin niet. Dit lukte hem wel in een met 1–4 verloren wedstrijd in deLeague Cup tegenManchester City.
Toivonen keerde terug naar Stade Rennes, dat hem in augustus 2016 verkocht aanToulouse FC, de nummer zeventien van de Ligue 1 in het voorgaande seizoen.[20] Hij tekende hier een contract tot medio 2019. Toivonen kwam in zijn eerste seizoen in dienst van Toulouse tot 35 wedstrijden, zijn hoogste seizoenstotaal in zijn loopbaan. In meer dan de helft ervan begon hij wel op de bank. Hij maakte op 10 december 2016 eenhattrick in een met 3–2 gewonnen competitiewedstrijd thuis tegenFC Lorient, zijn eerste sinds zijn PSV-tijd. Gedurende het seizoen 2017/18 kreeg hij minder speeltijd en scoorde hij niet.
Toivonen maakte op 21 augustus 2007 eenhattrick voorZweden -21 tegenWales –21. Zijn ploeg won deze vriendschappelijke wedstrijd met 4-3. Hij bereikte later dat jaar met Zweden –21 de halve finale van hetEK –21 van 2009.
Toivonen maakte in zijn zesde interland (op 29 mei 2010) zijn eerste doelpunt voor de nationale ploeg. Hij kopte in een met 4-2 gewonnenoefeninterland tegenBosnië-Herzegovina de 1-0 binnen.[21] Zijn tweede goal voor Zweden maakte hij op 11 augustus 2010, eveneens in een oefeninterland. Thuis tegen Schotland werd het 3-0, waarbij Toivonen het derde doelpunt maakte.
Toivonens derde doelpunt voor de nationale ploeg was zijn eerste in een interland waarin iets op het spel stond. Hij schoot op dinsdag 11 oktober 2011 de winnende 3-2 binnen in het laatste groepsduel van de kwalificatiereeks voor hetEK 2012, thuis tegenNederland. Door dat doelpunt kwalificeerde Zweden zich als beste nummer twee van alle kwalificatiepoules rechtstreeks voor het EK. BondscoachErik Hamrén nam hem ook op in zijn selectie voor het toernooi zelf. Daarop speelde hij in twee van de drie groepswedstrijden, waarna Zweden was uitgeschakeld.
Toivonen behoorde ook tot de selectie van bondscoachJanne Andersson op hetWK 2018. Hierop was hij basisspeler in alle vijf de wedstrijden die de Zweden speelde tot ze in de kwartfinale verloren vanEngeland. Hij maakte het openingsdoelpunt in de met 2–1 verloren groepswedstrijd tegenDuitsland. Na afloop van het toernooi stopte hij als international.[22]