Stay up to date with the latest news
Subscribe to our telegram channel
Giovanni Van Bronckhorst opened the score with a sensational 18th-minute opener before Diego Forlan hit back with four first-half minutes remaining.
Sneijder edged the Netherlands ahead again on the 70th minute, while Arjen Robben made the game safe three minutes later.
Maximiliano Pereira scored in stoppage-time to give hopes for Uruguay, but the Netherlands held on.
The Netherlands progressed to the final and it will meet either Spain or Germany.