An early second-half converted try from wing Giovanbattista Venditti proved the difference between the two teams as Italy jumped above Ireland in the table with their second victory this season and their first over the Irish since 1997.
Fly-half Paddy Jackson, who started at 10 after Lions favourite Jonathan Sexton was ruled out with a foot injury just two hours after being named in the side last Thursday, slotted five penalties but Italy notched the same number courtesy of four from Luciano Orqeura and one from Gonzalo Garcia.
Ireland's horrific injury run continued as they lost Keith Earls and Luke Marshall in quick succession before replacement back Luke Fitzgerald followed suit, with flanker Peter O'Mahony forced to move to the wing before the game was 40 minutes old.
Italy led 9-6 at the break after a hat-trick of penalties from Orqeura in comparison to a brace from Jackson but things could have been worse for the Irish in the opening half as they escaped Brian O'Driscoll's sin binning for stamping with just a single penalty against them.
O'Driscoll's illegal footwork on Simone Favoro didn't appear as serious as Cian Healy's indiscretion on Dan Cole when the Irish lost to England in Round 2 but the veteran Lions tourist could yet be the subject of a citing complaint.
Ireland opened the scoring through Jackson with six minutes played but Italy looked set to lead by six at the interval after Orqeura hit the target after 13, 21 and 35 minutes to make it 9-3 to the Azzuri.
Jackson narrowed the gap on the stroke of half-time to cut the gap to three but it was the hosts who started the second period the brighter as Giovanbattista Venditti burrowed over from close-range eight minutes in.
Referee Wayne Barnes called for the TMO due to the presence of a pile of bodies surrounding the touchdown but eventually gave the signal the majority of the Stadio Olimpico were looking for as Italy moved 14-6 ahead.
Orqeura's conversion stretched the advantage to 10 but Ireland kept their composure to hit back to within a point at 16-15 thanks to three further penalties from Jackson inside a 10-minute spell when Italy skipper Sergio Parisse was sent to the bin for a trip on Ian Maidigan.
Ireland started to go through the phases as the game hit the final 15 minutes but Italy refused to let their line be breached and Orqeura sealed the win with the last kick of the game.