Bert van Marwijk's team were fortunate with their opening goal in South Africa 2010 as Simon Poulsen headed into his own goal just after the interval, via a deflection from Daniel Agger.
Before the deadlock was broken Denmark threatened to cause an upset in Johannesburg and they were always in the hunt for a draw until Kuyt tapped home late on.
The Dutch headed into the tournament on the back of 19 matches unbeaten, although the Danes would point out they qualified ahead of Portugal.
Kuyt and Rafael van der Vaart had a couple of early efforts on goal but centre-back Simon Kjaer was showing why he has been tipped to join one of Europe's big clubs.
The Netherlands appeared to be lacking the pace of Bayern Munich winger Arjen Robben, who was still recovering from a hamstring injury but was fit enough for the bench.
Sensing an upset, Denmark started creating chances, the first of which fell to Arsenal striker Nicklas Bendtner.
Agger's crossfield ball found winger Dennis Rommedahl on the right flank, who swung over a perfect cross that Bendtner failed to steer towards goal.
The diagonal ball was working for Morten Olsen's men and Rommedahl was set free shortly after and saw a fierce drive saved.
Thomas Kahlenberg was the next to go close and he had a finish tipped over the crossbar by Maarten Stekelenburg after a powerful run beyond the Dutch defence.
The closest Van Marwijk's men came to a first-half goal was Kahlenberg's wayward clearance that struck a team-mate and flew over his own bar.
All of Denmark's hard work was undone within 35 seconds of the restart after Robin van Persie got in a decent position on the left.
His cross should have been cleared but Poulsen got his header all wrong and it glanced off Agger before going in.
Despite going ahead, they did not look particularly threatening until Eljero Elia came off the bench and added pace to the Netherlands attack.
With five minutes remaining his finish came off the post and allowed Kuyt to tap home.
Netherlands (4-3-3): Stekelenburg; Van der Wiel, Heitinga, Mathijsen, Van Bronckhorst; Van Bommel, De Jong (De Zeeuw 88), Sneijder; Kuyt, Van Persie (Afellay 77), Van der Vaart (Elia 67).
Subs (not used): Robben, Boulahrouz, Ooijer, De Zeeuw, Braafheid, Vorm, Elia, Schaars, Babel, Huntelaar, Boschker.
Denmark (4-4-1-1): Sorensen; SB Poulsen, Kjaer, Agger, L Jacobsen; Jorgensen, Kahlenberg (Eriksen 73), C Poulsen, Enevoldsen (Gronkjaer 56); Rommedahl; Bendtner (Beckmann 62).
Subs (not used): Kvist, Jensen, Tomasson, Kroldrup, J Poulsen, Andersen, Beckmann, Larsen, Christiansen, Mtiliga.