Italy started the brighter of the two sides, with Arianna Caruso going close in the eighth minute when she drove into the box, muscled past two defenders, before firing a shot just wide. After Emma Severini and Cristiana Girelli got in each other's way when going for a close-range header, the former then tested Cecilie Fiskerstrand, but it was a comfortable stop for the Norway goalkeeper.
At the other end, Ada Hegerberg nearly bundled the ball home after a goalmouth scramble, followed by Signe Gaupset firing a 45-yard strike narrowly past the post.
The breakthrough finally came in the 51st minute when Italy captain Girelli touched in Sofia Cantore's cross-shot for her 60th goal for her country. Severini thought she had made it 2-0 after turning the ball under the body of the keeper but Caruso was offside in the build-up.
Seemingly out of nowhere, Italy conceded a penalty when Elena Linari brought down Hegerberg in the penalty area but the experienced striker missed the goal entirely with her woeful spot-kick. However, the Lyon skipper atoned for her shocking miss when she rolled the ball under Giuliani in the 66th minute following a simple ball over the top, which the Italians failed to deal with.
Just as it seemed as if the contest would be heading for extra-time, Girelli came up trumps again when she powered in a header in the 90th minute at Letzigrund in Zurich. The Italians reached their first Euros semi-final since 1997, while Norway suffered another heartache in the competition.