The previous two champions of Europe could not be separated in Madrid as Alvaro Morata and Diogo Jota missed the pick of the chances.
Luis Enrique and Fernando Santos named strong starting line-ups for an energetic first half, with Manchester City's Aymeric Laporte winning his first cap at the heart of the Spain defence.
Laporte was a little fortunate not to be punished with 21 minutes left as Cristiano Ronaldo got free in the box before heading wide from one of the quieter second half's few good openings.
After a slick start in possession, Spain looked to have conceded from Portugal's first attack, but Jose Fonte's powerful header was disallowed for a push.
Ferran Torres missed Spain's first clear-cut chance, nodding wide at the far post after Morata crossed expertly from the left.
Ronaldo and Renato Sanches combined well to trigger a counter-attack, and the Portugal captain was almost presented with a chance when Spain goalkeeper Unai Simon's attempted clearance cannoned off the Juventus star.
Morata threatened twice just after the restart, denied by Simon and then by a Fonte block, with his follow-up effort bobbling wide, before Pablo Sarabia steered a good chance over the bar.
Portugal should have taken the lead on the hour mark, Jota's header from six yards out deflected over after Ronaldo clipped a cross to the left-hand post.
Ronaldo then glanced the ball wide from Bruno Fernandes's wicked delivery, Laporte given a let-off after allowing the forward a free header in the box.
Koke almost forced the winner in the closing minutes, his free-kick from the left of the box parried away by Rui Patricio before it could creep into the bottom-right corner.
Morata should have won the contest in stoppage-time, but could only rattle the crossbar after being gifted a free run at goal.
Each side has one more warm-up game before UEFA Euro 2020 starts. Spain faces Lithuania in Leganes on Wednesday (AEST), while Portugal hosts Israel in Lisbon a day later.