The Finn had begun the event in an epic lead battle with team-mate Sebastien Loeb - and it was the world champion who stumbled, crashing out on Friday morning.
Ford's Petter Solberg was left as Hirvonen's main rival, but the Norwegian was being left behind even before he too crashed later on Friday.
Solberg's exit completed a dreadful day for the factory Ford team in the week the manufactuer's WRC exit was announced.
His team-mate Jari-Matti Latvala had already retired from leg one after a pair of accidents on the same stage.
While the chastened works drivers reflected on more chances squandered, M-Sport's young guns Evgeny Novikov and Ott Tanak rescued Ford's rally with calm drives to second and third places. That sealed a maiden podium for Tanak, and equalled Novikov's WRC career best.
Hirvonen's final winning margin over the Russian was 1m20.6s. Although Hirvonen had finished first in Portugal earlier this year, he lost that win to a technical infringement, making Italy his first WRC triumph since Australia 2011, just over a year ago.
Mads Ostberg probably would have been second had he not suffered a differential failure on Friday. He charged back to fourth with a string of stage wins, then escaped hitting a rock on the power stage to retain fourth.
Sebastien Ogier took a remarkable fifth in Volkswagen's Super 2000 Skoda. As the World Rally Cars struggled with extreme tyre wear on Friday, the S2000s flew, resulting in an outright stage win for Ogier and great times for his team-mate Andreas Mikkelsen and Ford S2000 privateer Karl Kruuda too.
Ogier could not resist Ostberg for fourth, but beat Chris Atkinson to fifth after a long battle was resolved when the Motorsport Italia Mini lost time with an apparent brake issue on the final stage. Mikkelsen meanwhile took seventh.
Solberg, Latvala and Thierry Neuville - who had also been a podium threat before rolling on Friday morning - all returned under Rally 2 and took the power stage bonuses.
As well as taking maximum power stage points, Solberg also salvaged ninth overall.
- Petter Solberg
- Sebastien Loeb
- Evgeny Novikov