Yuya Osako put Japan 1-0 up after half-time but it was his penalty shortly afterwards, awarded following a video review (VAR), that knocked the stuffing out of Iran.
Takumi Minamino's cross hit Morteza Pouraliganji's arm as he slid in, but Australian referee Chris Beath blew for the spot-kick and stood by his decision after watching a replay.
Osako stroked home the spot kick to give Japan a 2-0 lead with 23 minutes to play, and there was no coming back for Iran whose 43-year wait for a fourth Asian title goes on.
Genki Haraguchi then scored in stoppage time to complete a rout which had been wholly unexpected after Japan's unimpressive performances previously in the competition.
Carlos Queiroz's Iran scored 12 unanswered goals on the way to the last-four but it lacked ideas against a calm Japanese team who seized its opportunities.
At a rocking Hazza Bin Stadium, Iran lobbed balls at target man Sardar Azmoun at every opportunity but it was Japan who looked the biggest threat in the opening exchanges.
Captain Maya Yoshida headed over and Ritsu Doan saw a shot trickle wide as the Blue Samurai was anything but cowed by the physical Iran presence.
However, Shuichi Gonda had to be sharp to keep out Azmoun from a tight angle - after the goalkeeper had gifted Iran possession with a botched clearance. The game was on a knife-edge but a misjudgement from Iranian defender Hossein Kanani tilted it Japan's way 11 minutes after half-time.
While Kanani was protesting his innocence over an edge-of-the-box challenge, Minamino played on and crossed to Osako, whose glancing header put Japan ahead. It was a body-blow for Iran, but worse was to come when Pouraliganji was adjudged to have handled in the box, a decision that could have gone either way.
Osako stuck it away to all but silence the Iranian support, who then had to watch as Haraguchi stole in for the third goal. However, Japan will be buoyed by its best performance of the event so far, and it now take a 100 per cent record into Friday's final against Qatar or hosts the UAE.