Dave Donnelly reports from the Aviva Stadium
The result was different this time but the sense of a missed opportunity a familiar one for the Republic of Ireland.
Matt Doherty’s header five minutes from time salvaged a draw by Martin Braithwaite’s goal 12 minutes earlier was enough for Denmark to earn the point they need for Euro 2020 qualification.
Qualification for the World Cup in Russia fell apart at the hands of Denmark at this stadium two years ago but, while Denmark were by far the better side, they were anything but this time.
Ireland had controlled the game for the guts of 75 minutes against a Danish side whose unadventurous performance suggested they had come to nick a draw.
The home side had as much of the ball as they’ve had in any game in recent years but, barring a great Conor Hourihane chance, much of it was from range.
In the end, it would be a brief glimpse of invention from substitute Pierre Hojbjerg that unlocked the Irish defence and Age Hareide’s side needed just one chance.
It sucked the wind of what had been an increasingly hopeful Aviva Stadium as Ireland’s increasingly impressive performance had eased what were considerable pre-match nerves.
A brutalist opening half-hour did little to ease the tension inside the stadium, but perhaps gives some insight into why three of the five meetings between these sides have finished goalless.
Denmark could at least point to the loss of two key starting players in little over 30 minutes, including what looks a serious knee injury to Borussia Dortmund’s Thomas Delaney.
The midfielder found his right leg tangled between Alan Browne’s legs as he made an interception on the Preston North End man and collapsed in a great deal of pain.
And just past the half-hour, Atalanta striker Anders Cornelius, who had moments early been bandaged up after a clash of heads with John Egan, limped off with a hamstring injury.
The first clear chance of the game arrived moments later as Ireland finished the first half much the stronger, and Conor Hourihane may rue his reluctance to use his right foot.
An overhit pass from David McGoldrick prompted a moment of indecision in the Danish backline and the Aston Villa man scampered through, but his weak shot was easily saved by Kasper Schmeichel.
Browne was the next to call Schmeichel into action as he latched onto an impressive McGoldrick knock-down, but his first-time volley just veered past the left-hand post.
Two minutes before the break, McGoldrick flashed a shot over the bar from distance, while in injury time Shane Duffy almost got a head to Glenn Whelan’s inswinging cross.
The sight of Christian Eriksen – chief tormentor in that 5-1 defeat – dropping deep to pick the ball up from his centre-halves would have been exactly what Mick McCarthy wanted to see.
That day the Tottenham Hotspur man created havoc in the space between Ireland’s defence and midfield but, here, the gaps rarely appeared.
Ireland continued to push after the break and Ciaran Clark, on at the break for Egan, saw his header blocked and the resulting Hourihane corner just about clawed away by the alert Schmeichel.
A swift Irish counter saw Enda Stevens pick out the peerless McGoldrick in the box but, having to check back, his shot on the turn flew over.
The Danes sat back more and more, and Ireland’s right-hand side combination of Doherty and Jeff Hendrick came to the fore.
It was Doherty’s mistake that led to the goal, however, as he lost his man Braithwaite and the winger burst inside to finish brilliantly past Randolph.
That looked to be that but the drama continued and Doherty redeemed himself by arriving late to calmly nod Stevens’ cross into the net.
Stevens had a chance to write himself into Irish folklore in injury time when Schmeichel dropped the ball after crashing into his own defender, but he couldn’t wrap his foot around the ball.
Republic of Ireland: Darren Randolph; Enda Stevens, John Egan (Ciaran Clark 46), Shane Duffy, Matt Doherty; Glenn Whelan (Sean Maguire 81), James McClean, Conor Hourihane (Callum Robinson 68), Jeff Hendrick, Alan Browne; David McGoldrick.
Subs not used: Mark Travers,, Troy Parrott, Kieran O'Hara, Kevin Long, Alan Judge, Joshua Cullen, James Collins, Jack Byrne, Robbie Brady.
Booked: Glenn Whelan (55), James McClean (77).
Denmark: Lasse Schone; Kasper Schmeichel; Jens Stryger Larsen, Simon Kjaer, Mathias Jorgensen, Henrik Dalsgaard; Christian Eriksen, Thomas Delaney (Pierre Hojbjerg 13), Lasse Schone (Andreas Christensen 84), Martin Braithwaite; Yussuf Poulsen, Andreas Cornelius (Kasper Dolberg 13) .
Subs not used: Robert Skov, Frederik Ronnow, Christian Norgaard, Jesper Hansen, Christian Gytkjaer, Peter Ankersen, Joachim Andersen, Daniel Wass.
Booked: Lasse Schone (33), Kasper Schmeichel (90+1)
Referee: Felix Brych (Germany).
Extratime.ie Player of the Match: