Edin Dzeko and Kostas Manolas gave Roma an early lead in Azerbaijan, but Qarabag were inches from a late equaliser in the 2-1 result.
The Giallorossi played the first ever Champions League group game in Azerbaijan and were hoping to build on the opening goalless draw with Atletico Madrid. Coach Eusebio Di Francesco reshuffled, as Diego Perotti, Patrik Schick, Hector Moreno, Rick Karsdorp and Emerson Palmieri were injured, while Daniele De Rossi and Kevin Strootman rested. Qarabag were able to start Albania international left-back Ansi Agolli despite a groin injury and wanted to recover from the 6-0 mauling at Chelsea.
Roma had been without a victory in nine away Champions League fixtures and seven overall, since a 3-2 over Bayer Leverkusen on November 4, 2015.
The deadlock was broken at the first opportunity, as a poor punch from a corner saw Lorenzo Pellegrini volley it towards the back pot for a Kostas Manolas diving header.
The crowd erupted into a deafening roar when Qarabag merely had a counter-attack to earn a corner, but Roma doubled their lead with a well-worked goal. Stephan El Shaarawy flicked up the ball for Edin Dzeko to chest it down and fire in off the underside of the bar from a tight angle.
Not only was it the 100th goal Roma had scored in the Champions League proper, but also the first time in this tournament that a Bosnian striker had scored past his compatriot ‘keeper.
Maxime Gonalons saw his glancing header flash across the face of goal from another corner, but Ndlovu was dangerous on the counter and saw his shot deflected.
Roma were already looking complacent after 25 minutes and paid the price. Gonalons was caught in possession by Ndlovu, who rolled through for Pedro Henrique to shoot past on-rushing Alisson from 10 yards. It was the first ever Qarabag goal in the Champions League and the noise from the crowd was deafening.
El Shaarawy’s downward header at the far post was palmed off the line by Sehic, who also beat away an Aleksandar Kolarov free kick and sprinted off his line to clear desperately from Gregoire Defrel.
The hosts started the second half very aggressively, putting in a series of crosses and Michel blasting over the bar. Lorenzo Pellegrini tried to weaken the siege, his snapshot from outside the area palmed round the post.
Defrel limped off, making way for Alessandro Florenzi in his old more advanced role, and the Italian immediately threaded through for Kolarov to blast over from a tight angle.
Bruno Peres got a similar attempt on target, but this time Sehic was able to palm it out from under the bar. Gonalons had a terrible game that was getting worse as time wore on, so inevitably was replaced by Daniele De Rossi.
Qarabag continued to push and had a series of shots charged down, particularly Juan Jesus on Gara Garayev, but at the 88th minute Ndlovu’s header had beaten Alisson and squirmed inches past the near post.
The hosts poured forward in the final minutes in a desperate attempt to force an equaliser and Roma eventually were hanging on, glad to have a late corner.
Qarabag 1-2 Roma
Manolas 7 (R), Dzeko 15 (R), Pedro Henrique 29 (Q)
Qarabag: Sehic; Medvedev, Huseynov, Sadygov, Agolli; Richard Almeida, Garayev; Henrique (Elyounoussi 76), Michel (Quintana 88), Madatov (Guerrier 81); Ndlovu
Roma: Alisson; Peres, Manolas, Juan Jesus, Kolarov; Pellegrini (Strootman 81), Gonalons (De Rossi 67), Nainggolan; Defrel (Florenzi 58), Dzeko, El Shaarawy
Ref: Dias (POR)