Dutch winger Arjen Robben hit the winning goal, which will give Bayern a slender advantage for next Tuesday’s second leg in France.
Since joining Bayern from Real Madrid in August 2009, Robben has now scored 20 goals in all competitions, but none so important as his 69th-minute strike.
“I am very happy,” said van Gaal whose side are still on course of the treble of Champions League, Bundesliga and German Cup titles.
“1-0 is a good result and means we don’t have to take any risks for the second-leg, so we have done very well.”
The first-half dismissal of Bayern’s Franck Ribery for a dangerous challenge was cancelled out when Lyon’s France defender Jeremy Toulalan was also dismissed just after the break for a second yellow card.
Both Toulalan and Ribery will now miss the second-leg, as will Bayern’s Danijel Pranjic who picked up his third yellow card of the Champions League campaign.
“This was a very dubious red card against Ribery,” said van Gaal. “There is always the chance they can be given and Ribery gave the referee the possibility, he stayed on his feet longer than was necessary.”
With captain Mark van Bommel suspended, defender Philipp Lahm took charge and he admitted it would be hard to comfort Ribery after a difficult week.
All the pre-match hype was around Ribery, who was questioned by French police at the weekend after being involved in the under-age call-girl scandal which has rocked the French football team.
“It will be hard to comfort Franck after his red card, he is an excellent footballer who always wants to win,” said Lahm. “It is bitterly disappointing for us that he is suspended for the second-leg.”
But Lahm praised his side for showing plenty of composure, even after Ribery’s dismissal.
“It was tremendously important that we kept our composure, even with ten men,” said Lahm. “We played well and held the ball well.”
Having had his chances to score, Ribery was shown a straight red by referee Roberto Rosetti on 37 minutes for a dangerous foul on Lyon’s striker Lisandro Lopez as he body-checked the Argentinian while fighting for the ball.
Bayern’s fans were braying for blood after Rosetti flashed his red card, especially as Lopez was quickly on his feet after initially writhing in agony.
Lyon were also reduced to ten men after the break when France defender Toulalan tripped Robben to send the Dutchman tumbling to the turf to earn himself a yellow card on 51 minutes.
Then just three minutes later, he kicked away Bastian Schweinsteiger’s leg when challenging for a ball and Rosetti was reaching for his red card before Schweinsteiger landed on the pitch on 54 minutes.
The winning goal came with 20 minutes left when Robben launched his shot from well outside the penalty area, which gave Lyon goalkeeper Hugo Lloris no chance.
But Lyon coach Claude Puel insisted that the contest was far from over “though it’s a shame we didn’t manage to hang on to our numerical superiority to impose our game a little more and get a better grip on things.
“But it’s all to play for in the return.”