Having beaten the Danes in Copenhagen in June, the Croatians repeated the feat to reach 10 points from five games, one ahead of Denmark in their bid for a Nations League semifinal spot which goes to the pool winners.
Croatia round off their group campaign at bottom side Austria, who lost 2-0 in Paris on Thursday to a France side that will be looking for revenge when they travel to Copenhagen to meet the Danes on Sunday having lost the reverse fixture.
Croatia's best chance of the first half came from a corner in the 26th minute that eventually found its way to the head of Mateo Kovacic, but he could not get his effort on target.
Eriksen went closer for Denmark in the 39th minute, firing a rasping drive with his left foot that forced a smart save from Dominik Livakovic that kept the game scoreless at the break.
Defender Borna Sosa, who was born in the Precko district of Zagreb and learned his trade at local club Dinamo before moving to VfB Stuttgart, opened the scoring four minutes into the second half, coolly slotting home from the edge of the area.
Despite Denmark's attack misfiring for much of the night, a moment of magic from Eriksen looked set to secure a point as he fired home a brilliant dipping shot in the 77th minute.
The relief was short-lived though as Majer, who came on for Mateo Kovacic after Eriksen's goal, picked up the ball on the edge of the box and rattled it past keeper Kasper Schmeichel.
With both sides having one eye on the World Cup in Qatar, Denmark manager Kasper Hjulmand has work to do as his side were uncharacteristically sloppy against the 2018 World Cup finalists, although as long as Eriksen is fit they always have a chance.
Their talismanic captain, who bounced back from a near-fatal heart attack in their Euro 2020 clash with Finland 15 months ago, came close to levelling again with a deflected strike, but again Livakovic denied him.
That was the one bright spot for the Danes, who next face a tough test against a resurgent France side.