Both men made a decent start to the fight, but it was the Brazilian who sat on a two-point lead after the first round.
Alvarez readjusted his sights and started to find the target in the second round, slowing Vieira down with some heavy shots.
The Cuban now led by one as they entered the final three minutes. He continued on the front foot, pumping stiff lefts through Vieira's guard.
Alvarez sealed his spot in the last four courtesy of a 16-11 decision.