It means for all the optimism surrounding Gareth Southgate's side, England have lost three competitive matches in a row.
Shaw, 23, was winning his eighth cap for his country, and the first since March 2017 after being recalled following a strong start to the season with United.
"I have seen teams fold in that sort of situation but we finished really strongly, created a couple of very good chances", Southgate said.
The hosts did nearly get one back soon after, only for Rashford to be denied by a superb save from David Gea.
The second half was overshadowed by a nasty-looking head injury sustained by England left back Luke Shaw who needed lengthy treatment after an accidental clash.
England then suffered a blow at the start of the second half as Shaw had to be stretchered off after a collision with Dani Carvajal.
Luke Shaw, making his first worldwide start in three years, was taken off on a stretcher wearing a neck brace and oxygen mask early in the second half after a clash with Dani Carvajal, and the hosts failed to mount a comeback in his absence.
Manchester United forward, Marcus Rashford had put the home side in front after just 11 minutes but goals from Saul and Rodrigo before half-time sealed the win for Luis Enrique's side.
Rashford was also replaced in added time by Danny Welbeck, after signalling to the bench that he had picked up a knock.
England move up to Leicester for their next challenge, a friendly against Switzerland on Tuesday.
"That balance with the left footer for us, with him and Danny (Rose), was an advantage in several situations".
Gareth Southgate gave a start to Marcus Rashford, a player now struggling to make his mark with Manchester United this season.