Ali Adnan's outrageous free-kick opened the scoring, before a late Gonzalo Bueno goal sent the game beyond 90 minutes, and when they could not be separated it came down to Saif Salman's missed penalty that decided the match.
Uruguay went the closest of the opening exchanges though, with La Celeste's top scorer Nicolas Lopez getting in behind the defence thanks to a fine Sebastien Cristoforo pass and firing towards the far corner, only for Mohammed Hameed to save well. He had another chance too, riding a challenge in the area only to see his shot blocked, before Giorgian De Arrascaeta volleyed wide.
A foul by Diego Laxalt gave Iraq a free-kick wide on the right side of the penalty area in a seemingly innocuos position. Adnan stood over it and, with Guillermo De Amores anticipating a cross, the defender curled an audacious effort into the near top corner.
Uruguay were shell-shocked and Iraq pressed on, looking the more likely to double their lead than be pegged back. However, Lopez had another chance after the break, but his attempted lob was wayward following a neat lofted through ball by De Arrascaeta. In the process trying to defend that opening, Hameed and Adnan nastily collided but, bandaged and battered, they persevered.
Adnan then went close to another spectacular goal, firing from distance with another free-kick, while De Arrascaeta forced a save from Hameed moments later, proving there was still plenty of life in Uruguay.
Deigo Rolan and Gonzalo Bueno both had chances in quick succession as they looked to force an equaliser and the lifeline they needed. They edged closer when Bueno rattled the bar from De Arrascaeta's corner as Iraq dug their heels as they tried to hold on.
It was not enough, though, as the three substitutes combined. Rolan's cross found Felipe Avenatti, who headed down in the area for Bueno to volley home a dramatic 87th minute equaliser. Adnan stung the palms of De Amores from a tight angle in stoppage-time, but ultimately the semi-final went to extra-time - the first at a FIFA U-20 World Cup in 16 years.
Lopez continued to search for a goal to add to his tally of four, volleying wide after Avenatti's fine pass, but chances were scarce. Adnan continued to terrorise De Amores, with his header drawing a magnificent reaction save from the goalkeeper as time ticked down.
The match went to penalties however, and while the opening pair of Gianni Rodriguez and Ali Faez missed, it was Salman's effort high over the bar that decided the game. Uruguay will now face France in Saturday's final.