Marcus Rashford's first-half penalty opened the scoring in a low-quality affair in Guimaraes, the striker converting a penalty he won when clumsily brought down by Matthijs de Ligt.
The Ajax captain made amends in the second half with a towering header to level the scores before England substitute Jesse Lingard had what seemed a winner ruled out for offside with seven minutes to go.
IT'S 1-1!— ESPN FC (@ESPNFC) June 6, 2019
Matthijs de Ligt makes up for conceding the penalty and heads home at the near post! pic.twitter.com/RBtXxm8MYA
In the added period Netherlands won the game in farcical fashion, Walker diverting the ball into his own goal after an awful error by his Manchester City team-mate John Stones, before Barkley's poor pass allowed Quincy Promes to seal a final date with Portugal on Sunday.
Steven Bergwijn and Depay fired efforts straight at Jordan Pickford amid sloppy passing from either side and another mistake led to the opening goal for England in the 32nd minute.
De Ligt lost possession and was beaten to the loose ball by Rashford, the Manchester United striker sending Jasper Cillessen the wrong way from the penalty spot.
Jadon Sancho planted a free header straight at Cillessen from Fabian Delph's pinpoint centre before Pickford saved well from Depay following a Walker error.
Netherlands are 2-1 up!— ESPN FC (@ESPNFC) June 6, 2019
John Stones won't want to watch this replay ... pic.twitter.com/3gURQt62jN
Georginio Wijnaldum called Pickford into action again before Stones wasted a headed opportunity for England.
Netherlands were steadily building pressure on England's goal, though, and it told in the 72nd minute when De Ligt rose highest to nod home Depay's right-wing corner.
England thought they had won it with seven minutes to go when Lingard raced on to Barkley's pass, but a lengthy VAR check ruled the goal out for the tightest of offsides, then Raheem Sterling clipped the crossbar deep in added time.
And a comedy of errors saw Netherlands nudge ahead in the 97th minute.
A dallying Stones was robbed by Depay and although Pickford made a fine save from his effort, Promes reached the rebound first and his off-target strike was deflected in by Walker.
Promes then wrapped it up in the 114th minute as England imploded, Barkley's under-hit pass allowing Depay to again steal in and this time set up his team-mate for a simple finish.
What does it mean? Tired legs cause regular errors
Gareth Southgate opted to rest his fit-again captain Harry Kane - who returned from injury in the Champions League final - and others struggled to maintain high energy, with concentration levels often flagging.
But there is one more big game to come for Netherlands, whose Virgil van Dijk and Georginio Wijnaldum can add the Nations League to their Champions League crown collected last weekend in Madrid.
De Jong ready for Barcelona move
With both sides struggling to retain possession at the Estadio D. Afonso Henriques, Barcelona-bound Frenkie de Jong stood out as a shining light in midfield. The Ajax star looks poised to impress on a bigger stage.
Stones' moment of madness costs England
Defensive errors were a feature of both sides, but Stones played himself into trouble with two needless turns on the ball just outside his box. Depay rapidly closed him down and another mistake from Walker, who was slow to react, cost England any chance of reaching the final.
Netherlands will play Euro 2016 champions Portugal in Sunday's final, with the Three Lions' hopes of claiming their first major silverware since the 1966 World Cup over. Southgate's side will instead face Switzerland in the third-place play-off earlier on the same day.