The home team, who have won just one of their five qualifiers, controlled possession in the first half and failed to make the most of their domination.
On the Parken pitch where he plays his club football for FC Copenhagen, striker Andreas Cornelius almost opened the scoring after three minutes only to see his shot blocked.
With Ajax Amsterdam playmaker Christian Eriksen pulling the strings, the Danes could have been out of sight by halftime but the final ball often let them down.
Content to sit back, Bulgaria were dangerous on the break throughout and went ahead early in the second half with a classic counter-attack as midfielder Stanislav Manolev swept the ball home first-time at the end of a flowing move.
Cornelius was then clumsily brought down by defender Ilia Milanov after 63 minutes and Denmark captain Daniel Agger stroked in the resulting spot kick.
Denmark have six points while Bulgaria have 10, the same total as Italy who started the day on top of the group and meet Malta later on Tuesday.