Spain made a blistering start at the Wanda Metropolitano, creating a series of chances before Fabian Ruiz opened the scoring in the eighth minute.
Villarreal forward Moreno doubled the home side's lead with a well-placed header in the 33rd minute before making it 3-0 10 minutes later.
Moreno also had a hand in Spain's fourth on the brink of half-time as his cross was deflected in by the boot of Adrian Rus, before Mikel Oyarzabal made it 5-0 just before the end.
The victory means unbeaten Group F winners Spain will be among six seeded nations when the finals draw is made on November 30.
Romania goalkeeper Ciprian Tatarusanu produced a smart stop to deny a stretching Alvaro Morata from close range before Santi Cazorla turned and hit the bar from just inside the area in the seventh minute.
But Spain did not have to wait long for the opening goal as Napoli's Ruiz prodded in the rebound after Dani Carvajal's effort had been kept out.
George Puscas came close to levelling things up in the 12th minute when the ball fell to him in the box following an Inigo Martinez error but Kepa Arrizabalaga pulled off a brilliant save to keep him out.
Romania appealed for a penalty when Florinel Coman was brought down by Carvajal in the 28th minute but the referee was unmoved.
Spain made it 2-0 five minutes later when Moreno guided his header into the bottom corner of Tatarusanu's net.
Moreno got his second in the 43rd minute when he slid home from six yards and it was his cross which was turned in by Rus as ruthless Spain made it 4-0 two minutes later.
Some good defending from the visitors denied Sergio Ramos the chance to make it five in the 51st minute as Spain looked to increase their lead.
And shortly after Romania had another penalty appeal waved away, Morata hit the post in the 55th minute.
Substitute Oyarzabal made it 5-0 in added time when he steered his shot into Tatarusanu's net from just outside the area.