The host nation poured on the pressure in the opening frame, hoping to replicate the 3-0 Group D win over the Salvadorans on February 23, but found a Central American side backstopped by a goalkeeper determined to keep his team in the match.
Mexico had several first-half chances to open the scoring, the clearest of which came through Jesus Corona in stoppage time, but Morales was up to the task with a spectacular diving save.
The second half was a more even affair, with the Salvadorans coming to life in attack. But the hosts still had the better of the chances, specifically a Marco Bueno header that flashed just over Morales' goal on 72 minutes.
That near miss served as a warning, as Mexico would finally get its breakthrough in the 77th minute. A Jorge Espericueta corner kick found the head of Antonio Briseño in the heart of the area. The Mexico captain forcefully nodded past a stranded Morales, finally putting the tournament's defending champion ahead.
Seven minutes later, Briseño struck again. Off a scramble following another corner kick, the defender found the ball loose at the top of the box and slammed home his second of the night, assuring his team a place in the Grand Final.
Mexico advances to the Sunday final against the United States, while El Salvador will take on Cuba in the third place match.