France staged a second-half comeback to snatch a draw against Ireland in grim conditions in Dublin and break a run of five straight Six Nations defeats.
The visitors were on the back foot from the first whistle and Ireland captain Jamie Heaslip scored his side's only try following a couple of devastating driving mauls.
Ulster fly-half Paddy Jackson, so wasteful with the boot against Scotland, showed he is a fast learner, landing some crucial long-range kicks.
But Ireland tired badly as the second half wore on, Louis Picamoles scoring a try for France with six minutes remaining and Frederic Michalak landing the crucial conversion.
A late injury to substitute scrum-half Eoin Reddan, who was administered oxygen and then carried off, and a lent a sombre tone to the end of the match.
It is the second year in a row these two sides have drawn a Six Nations encounter - the score was 17-17 in Paris last March - and it was another absorbing, if at times desperate, contest this time around.
France, whose final game of the tournament is against Scotland in Paris next weekend, had been in danger of being whitewashed in the tournament for the first time in 56 years.
However, despite managing to grab a draw, head coach Philippe Saint-Andre will struggle to keep his job, whether his side beat Scotland or not.
For Ireland head coach Declan Kidney, victory over France would have provided welcome respite following a fortnight of speculation over his future - his contract is up after this year's tournament after almost five years in the job.
But his side having failed to beat Scotland in Murrayfield a fortnight ago, despite huge advantages in terms of territory and possession, and now failed to finish off an insipid France team, the writing may now be on the wall.
With the wind billowing around Aviva Stadium and a blanket of rain enveloping players and spectators alike, the game was always going to be characterised more by mistakes than free-flowing rugby.
Indeed, a couple of handling errors under the high ball set the tone before Ireland's forwards began to make large dents with their driving maul, a tactic the French had little answer to.
One drive, with Sean O'Brien at its rear, travelled fully 15 metres into French territory and the hosts scored their first try from a second shortly after, Heaslip burrowing over from short range.
Jackson, in the side ahead of the injured Jonathan Sexton and discarded Ronan O'Gara, added the extras.
France fly-half Michalak, back in the starting line-up after losing his place to Francois Trinh-Duc for the game against England, missed a makeable penalty chance after 15 minutes and the visiting team did little to warm the cockles of their large travelling contingent of fans in the opening quarter.
Ireland should have extended their lead when France went over the top at a ruck but Jackson missed a penalty from centre-field, before Michalak got his side on the scoreboard with a three-pointer after the host's scrum disintegrated.
Ulster's Jackson, playing in only his second full international, steadied the nerves with a long-range penalty 11 minutes before half-time and added another from almost the identical spot three minutes later as errors continued to flow from the French.
Much was said before the game about the need for Ireland to put France on the back foot from the opening whistle and break them psychologically and so it panned out in the first half, with France, who were clueless in attack, never able to recover their composure after those early Irish mauls.
Michalak missed a difficult penalty attempt on the stroke of half-time and France, for whom skipper Thierry Dusautoir had been tireless in defence in a losing cause, were booed off by their fans.
When Louis Picamoles dropped the ball from Jackson's restart it was apparent it would be more of the same from a beleaguered French outfit in the second half.
Ireland should have added points after several waves of attack but desperate French defence and an ill-judged Rob Kearney drop-goal attempt let the visitors off the hook.
Morgan Parra took over kicking duties in the second half and slotted a three-pointer after 52 minutes to keep France alive but scuffed his second attempt at goal after Ireland went off-side.
Ireland began to lose their way as the second half went on, forgetting the pragmatic tactics that won them the first half, namely tight forward play and clever territorial kicking.
But while France were beginning to dominate in the scrum, Michalak, who had another poor day at the office in open play, was unable to spring anything worthwhile in attack.
When France did finally create some space, full-back Yoann Huget butchered the opportunity, ignoring the overlap and going into contact instead.
But France did cross soon afterwards, Picamoles reaching over for the try after a sustained period of pressure on the Irish line. Michalak levelled the scores with a difficult kick from just inside the left touch-line.
Ireland nearly nicked the win with four minutes remaining, Picamoles, who put in a monumental shift for France, just beating Keith Earls to the touch-down after a kick ahead. And the hosts were unlucky not to have won a penalty as it appeared Vincent Debaty had taken Earls out without the ball.
France had one last throw of the dice but with Ireland defenders out on their feet and no time left on the clock, Michalak decided to kick ahead, a move that rather typified French decision making.
IRELAND: Kearney, McFadden, O'Driscoll, L. Marshall, Earls, Jackson, Murray, Healy, Best, Ross, McCarthy, Ryan, O'Mahony, O'Brien, Heaslip, Reddan.
Replacements: Fitzgerald for McFadden (63), Madigan for L. Marshall (72), Reddan for Murray (63), O'Callaghan for Ryan (68), Henderson for O'Mahony (77), Cronin for Reddan (80). Not Used: Kilcoyne, Archer.
FRANCE: Huget, Clerc, Fritz, Fofana, Medard, Michalak, Parra, Domingo, Kayser, Mas, Samson, Maestri, Nyanga, Dusautoir, Picamoles.
Replacements: Bastareaud for Fritz (68), Debaty for Domingo (66), Guirado for Kayser (68), Vahaamahina for Maestri (51), Claassen for Nyanga (66). Not Used: Ducalcon, Machenaud, Trinh-Duc.
Referee: Steve Walsh (Australia)