Premier League leaders Manchester City will play Switzerland’s FC Basel, Manchester United face La Liga side Sevilla and Liverpool take on Portugal’s FC Porto.
Holders Real Madrid will face Paris St-Germain.
A record five English teams progressed from the group stage this season.
Premier League champions Chelsea were the only English team to make it through as runners-up, with the other four sides all topping their group.
Group winners will be away in the round of 16 first legs on 13/14 and 20/21 February, and at home in the return matches on 6/7 and 13/14 March.
The final will take place in Kiev on 26 May.
Champions League draw in full:
Juventus v Tottenham
FC Basel v Manchester City
Porto v Liverpool
Sevilla v Manchester United
Real Madrid v PSG
Shakhtar Donetsk v Roma
Chelsea v Barcelona
Bayern Munich v Beskitas
In the Europa League, Celtic have been drawn against Zenit St Petersburg in the last 32 of the Europa League while Arsenal will face Swedish club Ostersunds.
Celtic, who finished third in their Champions League group, will host the Russian club in the first leg on 15 February.
Arsenal, who won their Europa League group and were one of the seeded teams, will travel to Sweden first.
The second legs will be played on 22 February.
Zenit, who beat Rangers in the 2008 final when the tournament was known as the Uefa Cup, are managed by former Manchester City boss Roberto Mancini.
Following a third-place finish last season, they are currently fourth in Russia’s Premier League.
Ostersunds are managed by an Englishman, former Southampton defender Graham Potter. They were promoted to Sweden’s top flight for the first time in 2016.
The Gunners have never lost a European match against Swedish opposition, winning three and drawing one.
Meanwhile, 2010 winners Atletico Madrid will play FC Copenhagen, Napoli face RB Leipzig and German club Borussia Dortmund play Italian side Atalanta, who defeated Everton twice in the group stage.
The final will take place at the Parc Olympique Lyonnais on 16 May.