The visitors missed two clear cut chances in the first half when Mohammed Salah and Edin Dzeko both fired wide after being put through on goal and they were made to pay for their profligacy as Cristiano Ronaldo and James Rodriquez won the tie for the Spanish giants with two goals in four minutes.
Navas superbly denied Diego Perotti a late consolation, while Luciano Spalletti introduced Francesco Totti with 15 minutes left for what could be his final Champions League appearance, but Real saw out time to keep alive their hopes of securing an 11th Champions League trophy.
With a two-goal lead in hand from their first-leg trip to Rome, Zinedine Zidane made five changes from the 7-1 hammering of Celta Vigo at the weekend as Gareth Bale made his first start since suffering a calf injury on January 17.
The visitors had the better of the first half chances and will rue the missed opportunities as they were made to pay dearly for it in the second half.
Real, who have bounced back with three consecutive wins following their defeat to Atletico Madrid, had 37 shots to Roma’s 12 yet easily could have found themselves in trouble before the hour mark, but Zidane’s side are still yet to concede a goal at home in the competition this season.
Wolfsburg also qualified for the quarter finals in the other Champions League match played on Tuesday night with a 1-0 home win (4-2 on aggregate) over Gent.