Spain keeper Iker Casillas saved Joao Moutinho's opening penalty then Bruno Alves hit the bar to eventually open the door for substitute Fabregas, who scored via the post.
World champions Spain have reached a third consecutive major tournament final, which will be played in Kiev on Sunday, equalling the record set by West Germany in the early 1970s.
It was the second successive game to go to penalties after Italy beat England in the last eight, with the Italians playing Germany in Warsaw on Thursday in the second semi-final.
Despite the derby nature of the game between the two Iberian neighbours which featured seven Real Madrid club mates, it started in a largely sporting, open spirit.
Image: Spain's players celebrate after winning the penalty shootout during the Euro 2012 soccer championship semifinal match between Spain and Portugal in Donetsk, Ukraine, Thursday, June 28, 2012.