Former European Cup winners Bayern Munich, who will host the final at their Allianz Arena stadium in May, also made it through as they beat Zurich 1-0, Mario Gomez's seventh-minute goal completed a 3-0 aggregate win in their playoff against the Swiss side (see separate report).
Danes Odense were one of three teams who failed in their bid to qualify for the first time, along with Wisla Krakow and Malmo.
Polish side Krakow fell at the final qualifying hurdle for the seventh time, losing 3-1 at APOEL Nicosia who scored the decisive goal in the 87th minute to win 3-2 on aggregate.
Dinamo Zagreb of Croatia progressed 4-3 overall despite losing 2-0 to Malmo in Sweden.
Racing Genk, who are without a coach, beat Maccabi Haifa on penalties to become the fifth team in the hat for Friday's draw in Monaco where they will be joined by Europe's elite.
Villarreal, facing a 1-0 first leg deficit against Odense, struggled to break the deadlock until Rossi struck twice in 16 minutes in the second half.
The Italian, linked with Juventus in the close season, got in front of his marker to open the scoring five minutes after halftime and then rifled in a brilliant volley in the 66th minute. Carlos Marchena added the third goal.
Brazilian Ailton netted twice as APOEL produced more heartbreak for Wisla who had a 1-0 lead from the first leg.
Ailton's second goal came in the 87th minute just as the Poles appeared set to end their jinx.
Dinamo, national champions for the last six seasons, took a 4-1 lead to Malmo but were made to suffer after Sime Vrsaljko was sent off in the 50th minute.
Genk beat Israelis Maccabi 4-1 on penalties, after winning the second leg 2-1 to record a 3-3 aggregate draw.
The Belgians were playing under stand-in coach Pierre Denier after Frank Vercauteren quit following last week's first leg.
- Related links