Replacements used: Sam Hill (Exeter Chiefs) for Mills (half-time), Dan Robson (Gloucester) for Spencer, Chris Walker (Leeds Carnegie) for Clifford, Ben Ransom (Saracens) for Addison (all 49 mins), Max Crumpton (Saracens) for Britton, Luke Cowan-Dickie (Exeter Chiefs) for Hepburn (both 53), Sam Twomey (Harlequins) for Merrick (60). Not used: Ross Harrison (Sale Sharks).
Replacements used: Shane Buckley (Garryowen/Munster) for Gilsenan (29 mins), James Rael (Garryowen/Munster) for Scannell (63), Luke McGrath (UCD/Leinster) for Marmion, Jack Carty (Buccaneers/Connacht) for Coghlan Murray (both 68), Alan O’Connor (UCD/Leinster) for Buckley (73), Stuart Olding (Belfast Harlequins/Ulster) for Nelson (77). Not used: Peter Reilly (Lansdowne/Leinster), Jake Cawley (Old Belvedere/Leinster).
Mike Ruddock’s side adapted better to a heavy, muddy pitch in Stellenbosch and struck for first half tries from JJ Hanrahan and Kieran Marmion.
Ireland pushed 15-3 clear after yellow cards for England’s Will Addison and Dominic Barrow, but the Six Nations champions edged the second half thanks to a penalty try and Kyle Sinckler’s clinching effort.
This defeat - only their second in seven matches this year - will rankle with the Irish as they had played the better rugby in difficult wet conditions until England took control in the final quarter.
The Pool B leaders had started in good stead too, moving menacingly from ruck to ruck before out-half Tom Heathcote kicked them ahead in the fifth minute.
As they did during Monday’s historic win over South Africa Ireland offered a huge work-rate in defence, typified by their athletic back row.
Working their way into scoring range, Hanrahan slid a 29-metre penalty wide after England’s David Sisi was pinged for not rolling away.
England had a streak of indiscipline and it cost them dearly as they had two players sin-binned in quick succession - centre Addison (18 minutes) and lock Barrow (24).
Before that, Barry Daly did brilliantly for Ireland when running a kick back, slipping out of an initial tackle and darting up the right wing.
With England now back on their try-line, the Irish recycled quickly from a couple of rucks and the in-form Hanrahan outfoxed the first defender and showed great strength to scramble over to the left of the posts, 14 minutes in.
The Kerry youngster converted and as Ireland continued to press, retaining possession impressively, a dangerous tackle on Tadhg Beirne saw Addison sin-binned.
A sparkling break from scrum half Marmion, right through the middle of the English defence, laid the platform for the second Irish try in the 26th minute.
He was hauled down in sight of the whitewash and England infringed at the ensuing ruck, leading to Barrow earning a yellow for killing the ball.
Marmion cut through a deserved try from the close-in scrum, with Jack Conan’s pass to the left sending the scrum half over unchallenged in the corner.
A match-ending injury for talismanic flanker Conor Gilsenan temporarily halted Ireland’s momentum, but good harrying from Marmion at a scrum forced a turnover.
The mistakes continued from an off-colour England, their kicking skills not a match for the precise punting of Hanrahan and full-back Peter Nelson.
Another positive for Ruddock’s charges was the solid nature of the scrum, and they narrowly missed out on a third try when the dangerous Daly was denied by a foot in touch.
That opportunity presented itself after a strong hand-off and surging run from flanker Jordan Coghlan, who sat a Maths Leaving Cert paper earlier in the day.
But Ireland kept hold of the territory and a last-minute ruck offence from George Merrick allowed Hanrahan kick Ireland 15-3 ahead for half-time.
England made a strong start to the second half though, an early penalty from Heathcote helping to get them back on track.
Iain Henderson, Beirne and replacement Shane Buckley did well to disrupt England’s rhythm and a bout of heads-up rugby gave the Irish a chance to hit back.
However, Hanrahan could not convert a difficult 37-metre penalty from the right. England unloaded their bench as the final quarter loomed, and that strength in depth eventually proved crucial.
Their reserve scrum half Dan Robson went close to scoring his side’s first try after tapping a penalty. Ireland survived on that occasion, but from the resulting scrum the powerful English pack drove forward to earn a penalty try.
It was a double setback for Ireland as back rower Buckley was sin-binned for breaking early and coming in offside and Heathcote’s simple conversion closed the gap to 15-13.
The pressure was now really on Ireland and as their error count increased, England took advantage - their bulky forwards helping to maul Sinckler over in the left corner.
Heathcote underlined England’s improvement by clipping over a fine conversion for a 20-15 turnaround and they were able to wind down the clock, keeping a frustrated Ireland off the ball and in their own half.
The five-point loss, coupled with South Africa’s 52-3 victory over Italy, leaves Ireland third in the table but still in contention finish in the top two. Their final Pool B game is against bottom side Italy on Tuesday afternoon.
TIME LINE: 5 minutes - England penalty: Tom Heathcote - 3-0; 10 mins - Ireland penalty: missed by JJ Hanrahan - 3-0; 14 mins - Ireland penalty: JJ Hanrahan - 3-5; conversion: JJ Hanrahan - 3-7; 18 mins - England yellow card: Will Addison (dangerous tackle); 24 mins - England yellow card: Dominic Barrow (killing the ball); 26 mins - Ireland try: Kieran Marmion – 3-12; conversion: missed by JJ Hanrahan - 3-12; 40 mins - Ireland penalty: JJ Hanrahan - 3-15; Half-time - England 3 Ireland 15; 44 mins - England penalty: Tom Heathcote - 6-15; 53 mins - Ireland penalty: missed by JJ Hanrahan - 6-15; 62 mins - England try: Penalty try - 11-15; conversion: Tom Heathcote - 13-15; 66 mins - England try: Kyle Sinckler - 18-15; conversion: Tom Heathcote - 20-15; Full-time - England 20 Ireland 15
Referee: Lourens van der Merwe (South Africa)