Two high quality opponents produced numerous uncharacteristic errors, with Joshua Kimmich beating Real goalkeeper Keylor Navas at his near post to give Bayern the lead.
Marcelo equalised after 44 minutes, after Bayern had lost winger Arjen Robben and defender Jerome Boateng to injury.
And half-time substitute Marco Asensio struck after 57 minutes, capitalising on Rafinha’s sloppy pass, to give Zidane’s men the advantage ahead of next week’s second leg at the Bernabeu.
‘We’re very satisfied with the result, but we had a lot of problems in the first few minutes trying to take control of the game,’ Zidane said.
‘The tie is far from over, it’s more than possible that Bayern could win in the Bernabeu, but we are very happy to have won 2-1 in Munich.’
Real won 3-0 at Juventus in the quarter-final, but Juve drew level in Madrid and the Spaniards prevailed only after Cristiano Ronaldo’s stoppage-time penalty. That will be used as a cautionary tale by Zidane.
‘We know that the tie cannot be over after one leg,’ he added.
‘After the Juventus match, we know we’ll need to approach the Bayern result differently, otherwise things could go badly for us.
‘We can’t have another night like that.’
Zidane praised Navas for his performance, refusing to dwell on Kimmich’s goal, which came after Marcelo was caught out of position.
The Frenchman added: ‘Bayern’s goal was a consequence of several people making mistakes, not just Navas.
‘He was very good in the second half. I think we suffered a little tonight off the ball, I thought (Franck) Ribery was excellent tonight.’
Zidane also praised Marcelo, who equalised moments before the interval.
He added: ‘It’s a good thing that Marcelo plays for us. It’s not just about his goals, it’s what he can do defensively too. He can make the difference at any moment.’
The result means the German champions must score at least twice and overcome the away goals advantage to have any hope of denying 12-time European champions Real’s progress to next month’s final in Kiev. And Bayern boss Jupp Heynckes believes in his side.
‘We want to do whatever it takes to put this result right next week. It’s our duty,’ he said.
‘The semi-finals are two legs so we need to see what happens after two games. We didn’t deserve to lose today, so I’m confident.
‘We had so many chances, it was strange. I’ve never seen us have so many chances in a semi-final, especially against a team like Real Madrid.
‘We simply weren’t clinical enough and we gifted Real their goals.’
Heynckes rued the lapses which were punished by the visitors.
He added: ‘What was missing? We didn’t score, it was tough having the setbacks of losing Robben and Boateng, and then we gave away a very silly goal before half time – in fact both goals were gifts.’
‘We gifted them two goals really, but we created a huge amount of chances ourselves.
‘You have to deal with setbacks – at such a high level you can’t make mistakes like that at the back and you have to be more clinical when chances come your way.’