French surprise-package Monaco will take on Juventus in the other semi-final.
Eleven-times champions Real Madrid will take on neighbours Atletico Madrid in the Champions League semi-final after the draw pitted last year's finalists against each other.
The other semi-final will feature Monaco v Juventus. Monaco and Real will play the first leg at home, on May 2 and 3 respectively, with the return fixtures being played on May 9-10.
Real Madrid beat Atletico in the final in 2014 and again in 2016 but playing the second leg away could favour their bitter rivals.
Emilio Butragueño, former Real Madrid forward and the club's current Director of Institutional Relations said: "We know each other well. It's the fourth season in a row we're facing them in Europe and they're a tough opponent.
"In theory it's better to play the return leg at home but that all depends on the result of the first leg.
"When we played against Bayern it seemed that having the second leg at home was an inconvenience but we got through," he added.
The second semi-final pitches a freescoring Monaco side, who have scored 24 goals since reaching the group phase, against the steely Juventus defence, the Italian side having conceded only two goals in the campaign.
"Monaco ! Strong team with many talented players and an impressive run this season. We have to be careful, but the goal is clear," Juventus midfielder Sami Khedira said on Twitter.
Monaco, who were knocked out by two-time champions Juve in the 1997-98 ChampionsLeague semi-finals and in the quarter-finals two years ago, have never won the competition but reached the final in 2004.
"This Monaco team have no limits. They are young and fearless," said Monaco vice-president Vadim Vasiliyev.
"They (Juventus) have re-inforced their squad in the last two years, but so have we," added Vasiliyev.
Real and Juventus are still undefeated in the competition.
The final will be played in Cardiff on June 3.