Turkey beat Croatia 3-1 on penalties after a 1-1 draw in Vienna to progress to the semi-finals of Euro 2008.