Spain beat Switzerland on penalties, avoiding a big upset and booking their place in the last four ©Getty Images

Spain narrowly escaped a giant-killing at the UEFA European Championship as they needed penalties to overcome Switzerland, and will play Italy in the semi-finals.

Italy beat top-ranked Belgium 2-1 in today's other quarter-final.

Playing in Saint Petersburg Stadium, Spain took an early lead thanks to Jordi Alba, whose shot took a wicked deflection off Denis Zakaria.

The Spanish dominated possession and created more chances, but could not add to their advantage and were made to pay on 68 minutes when a defensive mix-up gifted Remo Freuler the ball in the Spain penalty area, and he squared for Xherdan Shaqiri to score.

Switzerland's momentum would be short-lived, however, as Freuler was perhaps harshly sent off for a two-footed but studs-free tackle nine minutes later.

Spain huffed and puffed but could not blow the Swiss wall down - either in regulation time or extra time - so penalties were needed.

Switzerland, fresh from a shoot-out win over world champions France in the last round, were favoured by many and had four of the scorers from that last-16 tie on the pitch.

And Swiss hopes were especially high when Sergio Busquets hit the post with the first penalty; Mario Gavranović duly scored in response to put Switzerland 1-0 up.

However, Switzerland failed to score any of their next three penalties, so goals from Dani Olmo, Gerard Moreno and Mikel Oyarzabal - who netted the winner - saw Spain through.

Swiss pair Fabian Schär and Manuel Akanji saw their spot-kicks saved by Unai Simón, before Ruben Vargas missed the target.

Lorenzo Insigne scored what turned out to be the Italian winner ©Getty Images
Lorenzo Insigne scored what turned out to be the Italian winner ©Getty Images

Later, in Munich, Italy won a pulsating quarter-final after taking a two-goal lead in the first half.

Nicolò Barella opened the Allianz Arena scoring from an acute angle, and Lorenzo Insigne scored a lovely second with a crisp strike from outside the box.

Nineteen-year-old Jérémy Doku - a menace all night on the Belgian left, won a penalty on the stroke of half-time, which Romelu Lukaku converted.

Lukaku squandered a couple of golden chances in the second half - one superbly blocked by Leonardo Spinazzola - as Belgium pressed for a leveller.

But one was not forthcoming, and Italy - who failed to qualify for the 2018 World Cup - are into the semi-finals at the expense of the number one team in FIFA's world rankings, whose "golden generation" have again left a major tournament empty-handed.

The bad news for Italy is that the influential Spinazzola left the game through injury, and his Euro 2020 campaign appears to be over.

Denmark face the Czech Republic and Ukraine are up against England in the other quarter-finals, which will be played tomorrow.