Chances were few and far between for both teams in the early stages before the home side went in front 10 minutes before half time.
Right-back Pavel Kaderabek scored the first goal of the tournament, cutting inside before picking out the bottom corner with a low left-footed drive.
Shortly after the interval, Jan Kliment had another chance to put the hosts two in front, but he missed the target and soon Denmark were level.
Jannik Vestergaard scored the equaliser, heading powerfully into the net after the Czechs were only able to half-clear a corner.
Denmark then became the side on top, and they snatched the points in the 84th minute when substitute Pione Sisto inventively poked home a loose ball in the area.
Both sides had chances in a frantic ending, but Denmark were able to hold on for three points.
The other two sides in Group A, Germany and Serbia, play their first match later this evening.