Atletico had beaten Real at the Santiago Bernabeu in last year's final, but the hosts quickly set about making amends for that defeat as Emiliano Insua deflected Pepe's effort into his own net after just 17 minutes.
Jese Rodriguez, who was only starting because of Gareth Bale's late withdrawal from the squad due to a calf injury, doubled Real's advantage with a low finish from Angel di Maria's pass just before the hour mark.
Di Maria was involved again as Real all but secured their place in the final when his deflected strike 17 minutes from time was credited as another own goal by Atletico defender Miranda.
Defeat ends a 24-game unbeaten run for Atletico and they will need a remarkable fightback to retain their title in the second leg at the Vicente Calderon on Tuesday.
Real boss Carlo Ancelotti hailed his side's performance as the best since he took over last summer.
"I think it was (the best performance). Above all because the team we were facing is a very difficult team to play against. They are very strong and aggressive, so I thought we played very well," he said.
"I am completely satisfied. We did everything well, we moved the ball with pace and were very aggressive without it. I wish the team could always play like they did tonight."
Atletico coach Diego Simeone, meanwhile, was left to rue his side's luck.
"I think Real Madrid played very well, but they scored twice with shots that hit our players on the body and went in.
"It is a very favourable result for the opponent, but apart from that there is nothing I can draw from the game at the moment.
"We still have 90 minutes to play and anything can happen in football."
In a typically intense encounter it was Real who were posing a more consistent threat early on and they went in front when Pepe wandered forward to meet Xabi Alonso's pass and his shot deflected off Insua and past the helpless Thibaut Courtois.
Miranda nearly restored parity moments later from Koke's free-kick as Iker Casillas came to Real's rescue and Atletico also came close to an equaliser just after half-time Diego Godin headed over from point-blank range.
However, Real dealt the visitors a sucker punch of a blow just before the hour mark as Di Maria found Jese with a lovely through ball and the Spanish under-21 international's effort squeezed under Courtois.
A brilliant goal line clearance from Modric prevented Godin from halving the deficit 18 minutes from time.
And within 60 seconds, Real had added to their advantage when Di Maria's long-range effort cannoned off Miranda to once again wrong-foot Courtois.
Barcelona also had luck on their side as Enaut Zubikarai's own goal added to Sergio Busquets' opener handed them a comfortable win over 10-man Sociedad.
Lionel Messi's drought without a goal from open play extended to five games, but the Argentine was extremely unlucky not to give his side the lead with a wonderful free-kick that came back off the underside of the bar.
Jose Manuel Pinto then prevented Barca from going behind as he saved Carlos Vela's effort.
That stop was to prove vital as a minute later Busquets bundled home the opener and Inigo Martinez received a straight red card for taking his protests to the referee too far.
With Sociedad a man down, Barca went for the kill after half-time but had to rely on a huge slice of luck to double their advantage as Gorka Elustondo smashed an intended clearance off his own goalkeeper Zubikarai and the ball rebounded into the net.