They could have wrapped up the result five minutes from the end of extra time but Luka Modric had his penalty saved by Kasper Schmeichel.
However, the Croatia captain returned to take one of the post-match kicks as goalkeeper Danijel Subasic save three of Denmark’s efforts to set up a quarter-final meeting with Russia this weekend
It was Modric’s sublime pass that put Ante Rebic through on goal, before being brought down by Mathias Jorgensen, and offered Croatia a chance to win just before the lottery of the shootout.
Mathias Jorgensen of Denmark heads the ball clear in front of Dejan Lovren of Croatia. Photo: Photosport
But Schmeichel made a smart save to keep the 1-1 stalemate intact through two hours of, at times, pedestrian football.
Two chaotic goals in the opening four minutes made for a rollicking start at the Nizhny Novgorod Stadium.
However, it proved a false dawn as the spectacle faded with both sides choosing caution as their priority given the rare chance to reach the last eight at a World Cup.
Jorgensen took all of 57 seconds to breach the Croatia defence at the end of a long throw-in by Jonas Knudsen, stabbing at the ball with his left foot as he took it off team mate Thomas Delaney.
Croatia goalkeeper Danijel Subasic got a hand to Jorgensen’s toe-poke but effectively deflected the ball across his own line.
There was an element of comedy to the fourth-minute equaliser for Mario Mandzukic as Denmark’s early advantage quickly disappeared.
Ante Rebic of Croatia about to be challenged by Thomas Delaney of Denmark.
A kick across the Danish defence was firmly hit away by Henrik Dalsgaard but straight into the face of team mate Andreas Christensen, creating a pinball effect that saw the ball fall for Mandzukic, who then expertly turned it into the net from close range.
The anticipated influence of Christian Eriksen for the Danes and Croatia’s Modric held out hopes of more mouth-watering action but their craft was only evident in patches.
Eriksen did shave the top of the woodwork just before halftime with a speculative effort while, at the other end, Ivan Rakitic forced a smart save from Schmeichel.
After the interval, the chances were even more sparse although Croatia did up the tempo towards the end of regulation time only to run into a resolute Denmark defence.
In extra time, Knudsen’s long throws proved the most dangerous attacking weapon but eventually it was penalties that delivered a winner.