Lyon squandered two golden opportunities to go ahead early on at the Estadio Jose Alvalade, through Memphis Depay and Karl Toko-Ekambi.
Within seconds of the latter miss, Gnabry had blasted Bayern into an 18th-minute lead in stunning style, and the Germany winger scored again just after the half-hour mark.
Gnabry, who scored four times in Bayern’s 7-2 annihilation of Tottenham Hotspur in the group stage, has now scored nine in nine appearances in this season’s competition.
Lewandowski’s inevitable goal, his 55th of the season, came two minutes from time.
Bayern as a team have 42 goals in 10 Champions League outings, with this more modest victory following their 8-2 trouncing of Barcelona in the quarter-finals.
They have won all of their European games this season but the biggest test is still to come, against a PSG side who will be a step up from what Hansi Flick’s team faced here.
After all, Lyon came seventh in the last French season, which was shortened because of the coronavirus pandemic. PSG won Ligue 1 and crushed RB Leipzig 3-0 in their semi-final.
It promises to be an enthralling final, even in the bizarre atmosphere behind closed doors in Portugal’s capital.
The German champions are looking to win their sixth European Cup, seven years on from their last Champions League triumph. It will be their 11th final altogether, against a club appearing in their first ever final.
For Lyon there will be disappointment as their second semi-final appearance ends in the same way as their first, a defeat by Bayern in 2010.
– Step too far –
This was a step too far for Rudi Garcia’s side following their shock successes against Juventus and Manchester City.
Now they must rouse themselves for a new Ligue 1 season which is just about to start, but there will be no European football at all for Lyon in 2020/21, for the first time in 24 years.
They would have had to win this Champions League just to qualify again, and to be fair they will wonder what might have been in this semi-final had they taken at least one of those early chances.
Bayern certainly take risks with their incredibly high line, inviting opponents to try to get in behind them.
Lyon’s chance arrived inside the fourth minute. Maxence Caqueret intercepted a Thiago Alcantara pass, looked up and released Depay. The Dutchman went round Manuel Neuer but, with the angle tightening, he could only find the side-netting with his shot.
– Astonishing transformation –
The next big let-off for the Bavarians came when Leo Dubois sent a pass in behind and Toko-Ekambi had the chance, getting his shot away at the second attempt but hitting the upright.
Just 49 seconds after that, Lyon were behind.
Gnabry cut in from the right into the middle before letting fly from just inside the box. His thumping left-foot strike gave Anthony Lopes no chance.
It was a different game after that and Gnabry made it 2-0 in the 33rd minute.
He stole possession in the Lyon half, drove forward and laid the ball out to Ivan Perisic.
The Croatian’s low cross should have been converted by Lewandowski. Lopes managed to save from him but Gnabry converted the follow-up.
It looked like that might be that, as substitute Philippe Coutinho had a late effort disallowed for offside, but Lewandowski made it 3-0 with time running out as he headed home Joshua Kimmich’s free-kick.
Bayern now have 20 consecutive victories and are unbeaten in 29 matches, a run that began last December. Just a few weeks before that Bayern were in a mess, having sacked coach Niko Kovac.
The transformation under Flick has been astonishing and they are now 90 minutes away from ending this longest of seasons with a treble.
Download our app and read this and other great stories on the move. Available for Android and iOS.