Neymar struck twice as Barcelona came from behind to seal a 3-2 victory over nine-man Atletico Madrid and reach the King's Cup semi-finals 4-2 on aggregate on Wednesday.
Fernando Torres put Atletico ahead inside the first minute with a precise strike from the edge of the area but Barca have clicked into form recently and hit back quickly through Neymar.
Atletico were awarded a penalty when Javier Mascherano was adjudged to have fouled Juanfran Torres on the half-hour mark, though television replays appeared to show the incident occurred outside the area.
Raul Garcia made no mistake from the spot to restore Atletico's advantage.
Miranda put the ball into his own net as he attempted to clear a corner which had been flicked on by Sergio Busquets and in a lightning attack from Barca Jordi Alba found Neymar in the area and the Brazilian finished clinically.
There were heated exchanges throughout the match with plenty at stake and it boiled over at halftime with Atletico midfielder Gabi Fernandez sent off following a confrontation in the tunnel.
Mario Suarez was also dismissed six minutes from the end after receiving his second yellow card.
The Atletico players were angry with the performance of the referee but Busquets felt that neither side benefited from his decisions.
"I've also been told that the penalty conceded by Mascherano shouldn't have been given. There were mistakes made against both teams," he told reporters.
"There was little control in the game in the first half. It was a good half for the fans and we took advantage of the openings that we had."
Despite the fact they were chasing the game, Atletico coach Diego Simeone said he asked his players to show more restraint at half time.
"I told them not to take risks and concentrate on not conceding goals," he told a news conference.
"I thought it was the best decision for the team and the club after the way the first half went."
Barca will face the winners of Getafe and Villarreal who play on Thursday with the latter leading 1-0 from the first leg.
Athletic Bilbao are at home to Malaga having drawn 0-0 in the first leg and Espanyol travel to Sevilla leading 3-1.