Ireland's Euro 2020 qualifying campaign came up just short as Mick McCarthy’s side were held to a 1-1 draw by Denmark in a pulsating contest at the Aviva Stadium.
A battling display saw Ireland dictate play throughout the nerve-jangling contest before Martin Braithwaite scored against the run of play in the 73rd minute to leave Ireland needing two to qualify.
Matt Doherty ensured a dramatic finish to the contest as the defender headed home in the 85th minute, but despite a late onslaught, Denmark held on for a point to secure their berth at next year’s tournament.
Roared on by a raucous full house at the Lansdowne Road arena, Ireland started the game at breakneck speed, hustling and harrying the Danish at every opportunity.
It took the visitors five minutes before they put a meaningful combination of passes together, yet ultimately Age Hareide’s side could not maintain any sort of presence in the Ireland half.
The Ireland manager’s experimental 4-2-3-1 formation was doing its disruptive best to keep the tempo high with neither side settling, although it was certainly suiting the home side.
Thomas Delaney hit the turf in the ninth minute, but Ireland played on as the player lay prone on the turf; the ball eventually dispatched to Row Z from an irate Kasper Schmeichel, who did not appreciate the continuation of the game from the home players.
The returning David McGoldrick was looking lively, leading the attack, and the striker was linking play with some clever touches and the odd back-flick for show.
The game settled down after 15 minutes as Denmark allowed Ireland to play the ball around their own half, happy to sit off and let the home side dictate the pace.
And it appeared to suit the visitors who gradually started to spend more and more time in the Ireland half, albeit without really threatening.
Christian Eriksen's 28th-minute snapshot from a clever Andreas Cornelius flick was the best that they could muster; Shane Duffy getting his body in the way on that occasion.
Ireland eventually enjoyed a spell of attacking football following Denmark’s second forced substitution in the 33rd minute, as Cornelius left nursing a head wound, while Delaney had previously gone off following an ankle injury as he attempted to tackle Alan Browne.
Two chances on goal followed, as midfield duo Conor Hourihane and Browne both sent shots goalwards.
Hourihane’s chance in the 34th minute actually came from a misplaced pass from McGoldrick, yet the Cork native raced onto the loose ball and while aiming for accuracy, the shot was tame.
Browne’s shot, three minutes later, followed a deft touch off the top of McGoldrick’s head, who was first onto a long ball out of the defence by Whelan.
The Preston midfielder caught his half-volley nicely and while Schmeichel scrambled, the ball never looked like sneaking in at the far post.
McGoldrick was next to try his luck from distance but while the forward had time to hit it, the effort was always rising and never threatened.
Denmark were restricted to an Eriksen free into the box two minutes before half time but the referee spotted an infringement.
As play moved into injury time, an Ireland corner was worked back into the box by Whelan, and Duffy was mere inches from connecting at the far post as Simon Kjaer stood strong to just about deny the Irish captain.
John Egan failed to show for the second half, as Ciaran Clark joined Duffy in the centre of defence, and Ireland went straight on the attack with 45 minutes to secure safe passage to Euro 2020.
Three minutes into the second period, a corner was swung to the back post and Clark was straight into the action as he watched his header on goal deflect off the top of Poulsen’s head.
The resulting corner was played short and led to a stinging Hourihane centre across the face that Schmeichel could only parry up into the air, and fortunately for the Danes, the ball was helped clear, despite McGoldrick’s shirt appearing to be tugged.
Denmark weathered the early Irish storm and again looked to slow the game at every opportunity, but the home side appeared intent on keeping the pace and tempo high.
Whelan’s lunge at Jens Stryger Larsen matched the mood, although the midfielder would pick up a caution for his scissor-action challenge.
Matt Doherty’s burst up the right flank in the 58th minute led to another Irish attack, as the Wolves defender sent a fine cross-field ball to James McClean.
And with numbers in the box, the cross proved disappointing, as McClean dragged his effort behind the row of green shirts, allowing Denmark to clear.
Another corner was won following some excellent link-up play between Jeff Hendrick and McGoldrick, and while Clark was again found with the ball into the box, this time he was just in front of the ball and could only guide it over the bar.
Doherty really started to shine coming out of that right back position, casually composed on the ball, taking it inside and setting up an attack down the left, leading to a sustained spell of Irish pressure.
The Wolves man then fed Browne, who worked the ball into the box, and while Denmark cleared the first wave, another crashed into the box, resulting in McGoldrick spinning to shoot on goal.
Alas for the striker, he could only scoop the ball over the bar.
But Ireland were now in attack mode, and in the 68th minute, Callum Robinson was sent into the fray as Hourihane’s energetic shift came to a close.
Four minutes later, Denmark finally went in search of a goal, and while substitute Kasper Dolberg was played into the box following some neat passing, Doherty did enough to work the ball out of danger.
73 mins GOAL DENMARK - Martin Braithwaite gets on the end of a Henrik Dalsgaard cross as the visitors hit the front against the run of playhttps://t.co/ysYaWRki0t #IRDEN #rtesoccer pic.twitter.com/Idard9Uv0Y— RTÉ Soccer (@RTEsoccer) November 18, 2019
But just moments later, the ball was in the back of the net, and it was the large travelling support in the Havelock Square End that were celebrating, as Martin Braithwaite timed his run to perfection to help the ball home from eight yards out.
A whipped ball in from the right cleared the Irish central defenders and while Doherty appeared to play for offside, the Danish forward lunged through the air to guide the ball past Darren Randolph.
Ireland were stunned, and took some minutes to regain any sort of momentum that had been building before the Denmark goal.
McGoldrick got a header on goal, but it looped over the bar, before Sean Magurie was then sent on to add fuel to the fire.
Ireland laid siege on the Denmark goal, but while the visitors looked reasonably comfortable, despite a Duffy appeal for a penalty as the big centre half hit the deck, Ireland would not give up.
And then in the 85th minute, the equaliser arrived as another long hopeful ball was whipped in from the left.
Matt Doherty arrived right on cue at the back post to guide his well-timed header low and hard into the net to set up a frenetic finish to the game.
The stadium erupted as Ireland then went in search of a winner with five minutes and added time to play.
Maguire came close with a near-post header, which was deflected wide for a corner, but Denmark saw out the 90 minutes as the official signalled the added time.
Four minutes for Ireland to save their campaign, but it was the Danes who would celebrate on the whistle as they gained the vital point to finish Group D in second place.
Ireland now look to the final qualifying matches to find out who they will face in the March play-offs in what is a last-chance bid to qualify for next summer’s showpiece.
Ireland: Republic of Ireland: Darren Randolph; Matt Doherty, Shane Duffy, John Egan (Ciaran Clark HT), Enda Stevens; Glenn Whelan (Sean Maguire 82), Conor Hourihane (Callum Robinson 68), Jeff Hendrick; James McClean, Al;an Browne, David McGoldrick
Denmark: Kasper Schmeichel; Henrik Dalsgaard, Simon Kjaer, Mathias Jorgensen, Jens Stryger Larsen; Lasse Schoene (Andreas Christensen 84), Christian Eriksen, Thomas Delaney (Pierre-Emile Hoejbjerg 13); Yussuf Poulsen, Martin Braithwaite, Andreas Cornelius (Kasper Dolberg 33)
Referee: Felix Brych (GER)