Two tries by Henry Slade helped England to their first win in Dublin in six years and ended the hosts' hopes of back-to-back Grand Slams.
The visitors ran in four tries in a gripping and absorbing contest with England always seeming the most likely victors.
England's win ended a run of two successive defeats at the hands of the Irish.
For Ireland, who are ranked two in the world on the back of 18 wins in their preceding 19 Tests, the defeat brought to an end a record run of 12 successive home victories.
'We can get better'
England avenged two painful defeats by Ireland but coach Eddie Jones says they will not be resting on their laurels.
"Defensively we can get better, [Ireland] took their chance when they had it," he said of the first of Ireland's two tries. "We are starting to coach the attack and building it up as we progress through the tournament."
England rocked the Irish within two minutes, Jonny May going over in the corner after a superb long pass by Owen Farrell picked out Elliot Daly coming into the line.
The England fullback off-loaded to May who ran in unopposed and Farrell converted brilliantly from the touchline for 7-0.
Johnny Sexton reduced the deficit with a sweetly struck penalty from in front of the posts.
The hosts received a further boost when Jerome Garces did not hesitate to send England flanker Tom Curry – making his Six Nations debut – to the sin bin for a high tackle on Keith Earls.
Jack Nowell, who Eddie Jones had suggested could play at flanker, for the scrums at least moved from the wing to replace Curry in his absence.
Jones had promised his side would bring brutality Dublin and the unfortunate Earls was victim to it again when Maro Itoje went in high on him without any intent to take the ball.
Ireland skipper Rory Best argued to Garces that it was worse than the Curry incident, but the French referee just awarded just a penalty.