Liverpool meet Chelsea again in an all-English tie while Arsenal face Villarreal and Manchester United take on Porto.
Barcelona meet Bayern Munich in the only tie not featuring an English side.
If United and Arsenal progress, they will meet in the semi-finals, with Barcelona or Bayern Munich awaiting the victors of the Liverpool-Chelsea clash.
Liverpool and Chelsea have met eight times in Europe with four draws and two wins apiece while Arsenal were indebted to a late Juan Roman Riquelme penalty miss when they defeated Villarreal on their way through to their only Champions League final against Barcelona.
United famously lost to Porto over two legs when Jose Mourinho was in charge as the Portuguese side won the tournament.
Villarreal v Arsenal
Manchester United v Porto
Liverpool v Chelsea
Barcelona v Bayern Munich
The semi-final draw is as follows with the final in Rome then just two games away.
Man Utd/Porto v Villarreal/Arsenal
Barcelona/Bayern v Liverpool/Chelsea
The quarterfinals will take place on the following dates with Liverpool's tie avoiding the anniversary of the Hillsborough disaster on April 15 as planned.
Tues April 7: Man Utd v Porto, Villarreal v Arsenal.
Wed April 8: Liverpool v Chelsea, Barcelona v Bayern Munich.
Tue April 14: Chelsea v Liverpool, Bayern Munich v Barcelona.
Wed April 15: Porto v Man Utd, Arsenal v Villarreal.
Click on the video link to hear the reaction of Liverpool manager Rafael Benitez to this morning's draw.