The Dutch had all the quality, with goals from Arjen Robben and the excellent Wesley Sneijder giving them victory in their last warm-up match before they face Italy in Berne on Monday week.
But a young Wales side gained tremendous experience under the captaincy of Jason Koumas for the first time.
Hull play-off hero Sam Ricketts was back in the line-up along with Toronto’s Carl Robinson, who had flown in from Canada on Friday for the match.
Holland were without Liverpool winger Ryan Babel, who on Saturday tore ankle ligaments which could rule him out of the early part of next season.
Holland boss Marco van Basten fielded what many expect to be the line-up that will face Italy in their group opener.
And if Holland wanted a meaningful final workout, it was going to be against the deep, massed ranks of Welsh defenders with only Freddy Eastwood up front.
One early Koumas free-kick was easily dealt with by the Dutch defence, while a good break by David Edwards ended with a poor pass across field, which almost presented Robben with a goal as he cut in from the left.
Joris Mathijsen headed over from a Sneijder corner and then the Real Madrid man tested Wayne Hennessey from long range.
A brave run by Joe Ledley came to nothing and the Dutch were back on the attack.
Measured, neat and with controlled possession, their class was obvious as Wales clung on.
Robinson got in the way of another Sneijder effort, Hennessey completing the save.
But Wales deserved credit for maintaining their organisation and the three youngsters in the centre of defence – Craig Morgan, Ashley Williams and Lewin Nyatanga – were striving to contain Ruud van Nistelrooy.
The former Manchester United striker had one long-range shot held by Hennessey before Morgan blocked a close-range shot from the same player following Robben’s run and cross.
Robben has not lost the annoying tendency to fall over too easily and Ricketts was booked following one typical tumble.
But two minutes later, Robinson’s poor header allowed Robben to surge away. He held off Chris Gunter before rolling the ball expertly past an exposed Hennessey.
That was the first goal Wales had conceded in 394 minutes and Hennessey then had to save well to his left from Orlando Engelaar.
Van der Sar was forced into his first save by Eastwood two minutes from the break before Gunter saw a far-post header from Edwards’ cross slam into the side netting.
Wales sent on Jack Collison for Robinson at the break, with the Dutch replacing Giovanni van Bronckhorst, John Mathijsen, Engelaar and Demy de Zeeuw with Tim de Cler, Mario Melchiot, Nigel de Jong and Dirk Kuyt.
The Dutch instantly increased the pace with Robben, van Nistelrooy and Kuyt all going close and, after 53 minutes, the hosts scored their second.
Ledley was penalised for a foul on Rafael van der Vaart and even the giant Hennessey at full stretch could not keep out Sneijder’s 20-yard free-kick.
Wales sent on Ched Evans and Craig Bellamy – who reclaimed the captain’s armband – for Edwards and Eastwood after 56 minutes.
Holland replaced van der Vaart with Ibrahim Afellay after 65 minutes, and seven minutes later Wales sent on Sam Vokes for Koumas.
Andrew Crofts came on for Ricketts and when Jan Vennegoor of Hesselink replaced Mathijsen for the Dutch, the game had become little more than a stroll for everyone.
Evans’ touch on put Bellamy clear in the box, but the Manchester United goalkeeper managed to block the West Ham man’s shot with his legs.
Hennessey saved well with his legs from a close-range drive from Vennegoor of Hesselink.