Cesare Casadei put Italy ahead in the 14th minute as he side-footed the ball into the top corner from just inside the box.
The Koreans were level nine minutes later after Bae Junho was fouled in the box.
Lee Seungwon made no mistake from the penalty spot despite the young Italian goalkeeper picking the right way.
Italy would break Korean hearts in the 86th minute when Simone Pafundi’s brilliant freekick went over the wall an into the net.
They’ll now face Uruguay in the final.