Barcelona and Real Madrid are on course for a King's Cup final showdown after Spain's two dominant teams recorded convincing home wins in their semi-final first legs on Wednesday.

Real thumped holders Atletico Madrid 3-0 at the Bernabeu, gaining a measure of revenge for the 2-1 defeat in last year's final at the same stadium, while record winners Barca beat 10-man Real Sociedad 2-0 at the Nou Camp.

Barca and Real last met in the final in 2011, when a Cristiano Ronaldo header in extra-time secured the trophy for the Madrid club, and if they successfully negotiate next week's return legs they will meet on April 19 at a yet-to-be determined venue. Atletico climbed to the top of La Liga at the weekend but their first defeat in 25 matches in all competitions since October brought Diego Simeone's side down to earth with a bump.

"We tried but we just couldn't find a way tonight," Simeone told a news conference. "They had the good fortune to open the scoring with a shot that was going out of play and that helped them settle.

"The players are feeling as you would expect after a 3-0 defeat. They are down because they are lads who want to win and when they don't they are not happy."

Last year's final was marred by red cards and brawling and the bad blood between Real and Atletico was still in evidence in a match littered with cynical fouls and gamesmanship.

After a cautious opening Atletico playmaker Arda Turan had the first genuine chance when he tested Real goalkeeper Iker Casillas with a header in the 13th minute.

Real were ahead four minutes later when centre back Pepe galloped forward and his speculative shot hit Emiliano Insua, wrong-footed keeper Thibaut Courtois and deflected into the net.

Atletico defender Diego Godin headed over when well placed early in the second half but Real doubled their lead just before the hour when a superb Angel Di Maria pass released Jese and he poked the ball past Courtois.

Luka Modric cleared another Godin header off the line in the 72nd minute and Real landed a stunning blow a minute later with another deflected effort.

Di Maria let fly from distance and the ball struck Atletico defender Miranda before spinning past the helpless Courtois.

STAYING CAUTIOUS

Real coach Carlo Ancelotti said it was possibly his side's best performance since he took over from Jose Mourinho in the close season.

"We were very effective in winning back the ball and we worked well down the wings," said the Italian. "My wish is to have a team like the one that played tonight.

"But we have to stay cautious as we have only played the first half of the tie and Atletico will do all they can to turn it around."

At a half-empty Nou Camp, Barca had little trouble dominating a defence-minded Sociedad and Lionel Messi cracked a scorching free kick against the crossbar before Sergio Busquets opened the scoring shortly before halftime.

The Spain midfielder pounced on a loose ball at a corner before Inigo Martinez was shown a straight red card by the referee for protesting.

The Sociedad defender and his team mates were incensed they had not been awarded a penalty moments earlier when Barca centre back Javier Mascherano appeared to haul Carlos Vela to the ground.

Barca's second on the hour was a bizarre own goal. Cesc Fabregas sent Alexis Sanchez clear and when his shot came back off a post Gorka Elustondo's attempted clearance hit goalkeeper Enaut Zubikarai and canonned into the net.

Outnumbered Sociedad did well not to concede again as Barca mounted wave after wave of attacks but the Basque club's bid for a first King's Cup since 1987 looks to be over.

"We wanted to score more goals given that we had an extra man and we could have scored more but it's a very favourable result," said Barca captain Xavi.

"We haven't conceded a goal at home and that's also a point very much in our favour."