The Dutch, who will play in Group E of the finals against Denmark, Japan and Cameroon, took a one-goal lead into the half-time interval after Liverpool striker Dirk Kuyt pounced on a loose ball on the half hour.
Despite missing Bayern Munich ace Arjen Robben, who is nursing a sore hip, the hosts went on to do more damage with three more goals in the final 20 minutes. Real Madrid midfielder Rafael van der Vaart doubled the Netherlands' lead in the 72nd minute, only for Asamoah Gyan, of French side Rennes, to reduce arrears six minutes later.
Ghana had proved formidable defensively until Kuyt's opportunistic opener, but the rest of their performance will leave Milovan Rajevac worried 10 days ahead of his side's tournament opener against his native Serbia on 13 June. Ghana will also play Germany and Australia in Group D.
Inter Milan midfielder Wesley Sneijder produced the masterpiece of the night with the Netherlands' third goal on 80 minutes. Sneijder, fresh from helping his Italian club claim an historic treble of the Serie A title, Coppa Italia and UEFA Champions League, unleashed a volley from 20 yards out that flew past Ghana goalkeeper Richard Kingson and into the net.
Robin van Persie made the scoreline look even more one-sided when he converted from the penalty spot three minutes from full-time. The Netherlands are coached by Bert van Marwijk, and he has now set a new national record of stretching their unbeaten streak to 18 consecutive matches.
Ghana meanwhile will hope to do better when they face Latvia at home in their final friendly on 5 June. The Netherlands will host Hungary, who were beaten 3-0 by Germany last weekend, in Amsterdam the same day.