The dramatic triumph gave Sporting, who finished third in the league, a cup double for the season after their League Cup win over Porto back in January, which was also gained on penalties.
However it was further disappointment for Porto, who were pipped to the league title by Benfica by just two points after an epic title chase.
Porto looked the stronger side from the off and deservedly opened the scoring four minutes before the break thanks to a towering header from Francisco Soares, who celebrated by waving a shirt bearing the name of goalkeeper Iker Casillas.
The Spanish stopper suffered a heart attack in training earlier this month, and his career is at risk.
However Bruno Fernandes levelled on the stroke of half-time when his shot was deflected home by Danilo Pereira, and the match went to extra time after Porto twice struck the woodwork in the second half through Soares and Pereira.
Sporting thought they had won it late in the first half of extra time when Bas Dost crashed home Marcos Acuna's cross, and while Felipe sent the Porto fans wild when he headed in a last gasp leveller to send the pair to penalties, his side couldn't ride that euphoria and fell at the final hurdle.