Trailing 2-0 from the first leg, Villarreal sparked hopes of a remarkable turnaround in the return at the Estadio de la Ceramica after Boulaye Dia finished in the third minute and Francis Coquelin headed in another to level the tie at 2-2.
But Jurgen Klopp threw on Diaz for Diogo Jota at the interval to shake Liverpool into life and it worked, the visitors scoring three times in 12 minutes to kill off Villarreal's revival and advance to their third Champions League final in five years.
Liverpool will await the winner of Real Madrid and Manchester City, who play their second leg at the Santiago Bernabeu on Wednesday, with City leading 4-3 from the opener last week.
Either City or Madrid will offer a sterner test than Villarreal, but after a chastening experience at Anfield last week, Unai Emery's side delivered a spirited performance that rattled Liverpool and showed why they knocked out both Juventus and Bayern Munich to reach the semifinals.
Liverpool were careless, perhaps complacent even, in the first half but sensational in the second, finding an intensity and pace Villarreal were simply unable to match.
Diaz, who started on the bench but was integral to the fightback, was excellent again and may soon be an automatic starter for Klopp.
A banner draped behind the Villarreal goal at one end read "90 minutes from our dream" while before kick-off the stadium announcer shouted, "it's possible, the comeback is possible!"
And if anyone inside the ground was still sceptical they were given an early injection of belief in the third minute as Pervis Estupinan swung in a cross from the left to Etienne Capoue at the back post.
Under pressure from Andy Robertson, Capoue skewed his finish horizontally, landing perfectly for the arriving Dia to sidefoot in.
Liverpool occasionally threatened on the break, with Mohamed Salah rolling Estupinan down the left and feeding Jota in the middle but Geronimo Rulli was quick to rush out and claw the ball away.
But Liverpool lacked their usual control and precision, with Alisson Becker booting the ball into touch before Naby Keita's misplaced pass back to his own defence almost resulted in Giovani Lo Celso earning a penalty.
The second goal came four minutes before half-time as Pau Torres launched a long ball from deep for Capoue to run onto.
Capoue's first touch cannoned away from him but he recovered, controlling and twisting away from Robertson before hanging up a superb cross with his left foot to the back post, where Coquelin climbed above Trent Alexander-Arnold and headed in.