As per the usual draw procedure at this stage, the eight group winners and eight group runners-up were divided into two pots for seeding purposes. Teams from the same country could not be drawn together, while teams that qualified from the same group were also kept apart.
Looking to become the first club to win three successive European crowns since Bayern Munich and Ajax in the 1970s, Real Madrid face a huge tie against a free scoring Paris Saint-Germain.
Barcelona will resume their old Champions League rivalry with Chelsea.
There will also be a meeting between the two most recent Europa League winners as Manchester United face Sevilla. Manchester City, meanwhile, will play Basel, and Tottenham have been handed a very challenging draw against 2017 finalists Juventus.
Juventus vs Tottenham Hotspur
Basel vs Manchester City
Porto vs Liverpool
Sevilla vs Manchester United
Real Madrid vs Paris Saint-Germain
Shakhtar Donetsk vs Roma
Chelsea vs Barcelona
Bayern Munich vs Besiktas
First leg ties will be split across the weeks of 13-14th February and 20-21st February, with return games to be played the following month on 6-7th March or 13-14th March.
Those teams who won their group will have the advantage of playing the second leg at home.