Morata sidefooted home at the end of a scintillating counter-attack and while Cristiano Ronaldo came on in the second half for Portugal, it was another substitute who grabbed the equaliser as Horta swept in with eight minutes left.
A 1-1 draw means neither of the two favourites in Group A2 claim the early advantage, with games against Switzerland and Czech Republic to come. Spain play the Czechs in Prague on Sunday while Portugal are at home to Switzerland.
Both of these teams will be among those considered capable of winning the World Cup in Qatar later this year but it was Spain’s youthful side that looked the more complete in a surprisingly feisty and energetic contest at the Benito Villamarin, coming on the back of another long and draining season.
Morata’s goal makes him Spain’s joint-seventh top-scorer in history, with 26 goals in 53 games, while Sergio Busquets made his 135th appearance for the national team, meaning he moves above Xavi Hernandez and sits behind only Iker Casillas and Sergio Ramos on Spain’s all-time list.
But it was the 17-year-old Gavi’s run and pass that made Morata’s goal and the Barcelona midfielder was arguably the outstanding player in the game, putting in another accomplished performance that will surely have impressed Luis Enrique.
Spain reached the final of last year’s Nations League, beating European champions Italy in the semis before losing to France, and they enjoyed a relatively smooth qualification for the World Cup, after collecting 19 points from a possible 24 to top Group B.
In contrast, Portugal had to go through the play-offs to qualify, beating Turkey and North Macedonia to avoid an embarrassing exit and doubts remain about Fernando Santos’ ability to find the right formula to accommodate his wealth of attacking options.
Spain took the lead in the 25th minute and it came from a Portugal attack, as Joao Cancelo’s attempted flick left the ball loose and Gavi raced to intercept.
The teenager drove past the half-way line and with options ahead of him, slipped the pass right, Morata letting it run for Pablo Sarabia outside him and continuing on into the box. Sarabia slid the ball across to give Morata a simple finish.
Carlos Soler should have made it two before half-time after a clever pass down the line sent Gavi clear and his pull-back found the arriving Soler, whose first shot was saved by Diogo Costa while his second flew over the bar.
Portugal’s best chance came early in the second half as Andre Silva did well to free Rafael Leao on the left side of the penalty area but Unai Simon denied the striker with his legs.
Spain were in sight of victory until Cancelo made amends for his earlier error in the 82nd minute, exchanging a neat one-two with Goncalo Guedes down the right before firing a cross into Horta, who was all alone and made no mistake.
Alba might still have won it for Spain late on but headed wide, with both teams hacing to settle for a point.