
Osasuna will clash against Athletic Bilbao in the other semifinal.
The matches take place on four different dates in February, March and April with the Spanish FA having a schedule headache as Real Madrid play in the Fifa Club World Cup early in February and then two legs of the Champions League last 16.
Real and Barca meet in the first leg at Camp Nou on March 1 and will play the second leg at Santiago Bernabeu on April 4 or 5.
Osasuna will play Athletic on Feb 8 and March 1.
The semifinal represents a chance for La Liga and European champions Real to get revenge for their 3-1 loss two weeks ago in the Spanish Super Cup against Barcelona.
Barca are currently the league leaders after they moved on to 47 points with their 1-0 win at Girona on Saturday.
Real are second, five points behind.