A nervy Ireland avoided a massive shock as they scraped past Italy to keep their slim Six Nations chances alive.
The bonus-point win moves Joe Schmidt's men onto nine points, one behind England and three behind leaders Wales.
Ireland need to claim bonus-point victories against France and Warren Gatland's grand slam chasers and hope other results go their way in order to retain their title.
On the evidence of this performance that must be considered a long shot.
Tries from Quinn Roux, Jacob Stockdale, Keith Earls and Conor Murray undid a spirited Italy, whose losing Six Nations run now stretches to 20 matches.
The champions' performance was riddled with mistakes as they conceded 15 turnovers and lost five lineouts, leaving Schmidt with more questions than answers from a game where he rested captain Rory Best and lock James Ryan.
"There's stuff we can do better," said man of the match Peter O'Mahony.
"We need more accuracy, we were probably trying too hard, forcing things."
Ireland were nervy in the opening stages and racked up four unforced errors before the eighth minute.
Conor O'Shea's men, however, couldn't take advantage and conceded three penalties in that time to hand Ireland the field position to work the opening score, Roux on hand to barge over for his second international try after Chris Farrell had broken the line.
Johnny Sexton tapped over the conversion but Ireland still weren't settled and Tommaso Allan opened Italy's account with a penalty after missing a long-range effort minutes before.
But the hosts messed up the restart and a fumble by lock Michele Campagnaro allowed Ulster wing Stockdale to run in from 40 metres for his 14th try in green.
Sexton missed his kick and soon after Ultan Dillane, one of four changes to the pack that started for Ireland against Scotland, joined Bundee Aki on the sidelines, the duo replaced by Iain Henderson and Andrew Conway.
Undeterred, Italy hit back and when hooker Sean Cronin, who was starting his first Six Nations game on his 68th cap, missed his target from a lineout, worked through the phases until Edoardo Padovani found space on the outside to scoot over for a try, Allan missing the extras.
Worse was to follow.
Ireland seemed to be in control of the ball on the Italy 22 but scrum-half Tito Tebaldi dispossessed his ponderous counterpart Murray before pushing off a weak tackle by Sean O'Brien and launching a kick upfield.
Full-back Rob Kearney reached the ball first but failed to deal with it and a long pass out to Maxime Mbanda eventually came to Luca Morisi and the Benetton man had the strength to barge past Farrell to give Italy a 16-12 half-time advantage.
Ireland were now in a contest and whatever Schmidt said at the break didn't have the desired effect immediately with Sexton and Kearney both making basic errors.
The head coach sent on Niall Scannell for Cronin and Ireland regained the lead on 51 minutes.
Italy, who conceded 14 penalties to Ireland's nine, were penalised by referee Glen Jackson and Murray tapped quickly for the impressive Dave Kilcoyne on his first Six Nations start.
The ball was recycled a number of times before Earls stretched over, this time Murray added the extras.
The Munster wing was denied his second just after the hour mark when he found himself in open space after a delicate move in midfield, the chance gone when Stockdale knocked on after Earls had been felled by the scramble defence.
Despite themselves, Ireland eventually claimed their fourth try when Murray reached out from a rolling maul near the Italian line.
Italy almost hit back with what would have made for an extra nervy finale but conceded another penalty when they had got to within a metre of the line and Ireland survived, just.
Italy: Jayden Hayward, Edoardo Padovani, Michele Campagnaro, Luca Morisi, Angelo Esposito, Tommaso Allan, Tito Tebaldi, Braam Steyn, Maxime Mbanda, Jimmy Tuivaiti, Dean Budd, Federico Ruzza, Simone Ferrari, Leonardo Ghiraldini (captain), Andrea Lovotti
Replacements: Luca Bigi, Cherif Traore, Tiziano Pasquali, David Sisi, Alessandro Zanni, Guglielmo Palazzani, Ian McKinley, Tommaso Castello.
Ireland: Rob Kearney; Keith Earls, Chris Farrell, Bundee Aki, Jacob Stockdale; Johnny Sexton, Conor Murray; David Kilcoyne, Seán Cronin, Tadhg Furlong, Ultan Dillane, Quinn Roux ; Peter O’Mahony (captain), Seán O’Brien, Jordi Murphy.
Replacements: Niall Scannell, Jack McGrath, John Ryan, Iain Henderson, Josh van der Flier, John Cooney, Jack Carty, Andrew Conway.