Karim Benzema's precise strike with eight minutes to play looked enough to earn Zinedine Zidane's side a second win from two LaLiga matches in 2019-20, only for Sergi Guardiola to level late on.
Madrid started their first home game of the season with none of their new signings in the first XI, as Zidane put faith in Gareth Bale, James Rodriguez and Isco despite weeks of speculation over their futures.
It was Bale who looked likeliest to break the deadlock in the first half, prodding a first-time effort just wide of the left-hand post and sending a header over the crossbar.
James also twice came close with a good strike and a header, but Valladolid goalkeeper Jordi Masip was left relatively untroubled despite Madrid's dominance.
Luka Jovic was sent on from the bench for his home debut and struck the crossbar with a header from Bale's cross - his first touch of the game.
Waldo Rubio was denied by Thibaut Courtois while Guardiola just failed to turn in a cross on the break, and Benzema's sharp turn and finish from 18 yards out looked to have punished those misses.
That was until the 88th minute, when Guardiola raced into space behind Raphael Varane and prodded the ball through the legs of Courtois.
What does it mean? Madrid need Hazard fit - and soon
For all their dominance, Madrid found it very difficult to pick their way through the Valladolid lines and only managed four shots on target throughout, including Benzema's superb strike.
It was the kind of game where Eden Hazard's dribbling was needed to unlock the defence. Zidane will hope he is fit again quickly.
Kroos class not enough
Toni Kroos completed all 53 of his first-half passes and created a game-high five chances, but his meticulous use of the ball was not matched by those around him.
With Hazard unavailable, Zidane brought on Vinicius Junior to try to unbalance the Valladolid defence, but the Brazil winger offered little end product to some determined runs.
Madrid head to Villarreal next Sunday, the day after Valladolid travel to Levante.