Torres put Spain ahead in the 17th minute, steering a left-wing cross from Mikel Oyarzabal past Italy keeper Gianluigi Donnarumma into the far corner. He added his second in the first half added time when he was left unmarked to head in another fine cross from Oyarzabal.
Italy, trailing by two goals at the break, had to play the entire second half with 10 men after captain Leonardo Bonucci was sent off for a second yellow card but showed real determination as they sought to avoid their first loss since a September 2018 defeat by Portugal.
The hosts made many attempts in the second half but found the Spanish defence alert. Italy ensured a tense end to the well-fought encounter when they pulled a goal back seven minutes from the end, as Chiesa took advantage of hesitant Spanish defending, broke from the halfway line and slipped the ball to substitute Lorenzo Pellegrini to convert.
But in the end that was the only consolation for Italy as they lost a chance of making it to another final.
It was a good outing for the embattled Spanish giants Barcelona as Sergio Busquets, Gavi, Sergi Roberto, and Eric Garcia represented them in the match. Busquets started the game and played all 90 minutes, while Gavi became the youngest debutant for Spain when he was included in the starting lineup.
At 17-years and 62 days, Gavi became the youngest ever to start for Spain, breaking the record held by Angel Zubieta of Athletic Club, who was 17 years and 284 days when he made his debut back in the 1930s. Fellow Barca player Ansu Fati, who at 17 years 308 days, had come close to taking the record a few months back who is third on the list.