Moreno was a free agent having been released by Liverpool at the end of his contract.
He made only two Premier League appearances last season after falling out of favour at Anfield.
The former Sevilla defender is returning to LaLiga with Javier Calleja's side, who finished 14th in 2018-2019.
"The Andalusian footballer is a complete full-back with a great ability to get forward in attack," a Villarreal statement read. "As well as adding width to his team, Moreno is a great assister of goals."
Villarreal also confirmed former Italy defender Daniele Bonera has opted to retire at the age of 38.
"After nearly 20 years as a professional footballer, I have decided to end this incredible era of my life," Bonera wrote on Villarreal's website.
"It has been a real privilege to play for clubs like Brescia, Parma, AC Milan and, in these last four years, Villarreal.
"I've grown both on a professional and personal level, and today I have the chance to face a new project with trust and certainty."
Bonera, who spent nine years at San Siro before joining Villarreal in 2015, has been named an assistant to new AC Milan coach Marco Giampaolo.