Manchester City will take on Real Madrid for a place in the final of the Champions League final, while Bayern Munich face Atletico Madrid.
Manuel Pellegrini guided City to the quarter-finals of the competition for the first time this season, and then successfully saw his team past a much-fancied Paris St Germain side to make the final four.
City were the first team to be pulled out, learning quickly that they would face Real Madrid, winners of the tournament in 2014.
Atletico Madrid, who sprang the biggest surprise of the quarter-finals by knocking out Barcelona, take on Bayern Munich, who are in the semi-finals for a fifth successive year.
The draw keeps alive the prospect of a final with both teams from the same country for the third time in four years, following Bayern Munich's win over Borussia Dortmund in 2013 and Real Madrid's victory over Atletico Madrid a year later.
The first leg matches will take place on 26-27 April, with City and Atletico to play at home.
The return fixtures will be played on May 3-4.
Whichever team wins the City v Real semi-final will then be the nominal home team for the final at the San Siro in Milan on May 28.
Manchester City v Real Madrid
Atletico Madrid v Bayern Munich