Having fallen behind to a Rick goal, the Giallorossi needed two penalties from Lorenzo Pellegrini, a fortunate VAR call and a Nicolo Zaniolo goal to progress.
Needing a win to go through to the next round, Roma were looking tidy on the ball for much of the first half although they were struggling to create anything of real note.
The game then turned against them as Rick ran at the Giallorossi defence and hit a powerful shot into the bottom corner from the edge of the box. That goal meant that Ludogorets went in at halftime 1-0 up.
Major drama at the Stadio Olimpico
10 minutes into the second half though, substitute Zaniolo was felled in the box by a defender and a penalty was awarded. Pellegrini stepped up and got Roma back on level terms.
Another 10 minutes later, Zaniolo ran through and was barged to the floor in the box by the nearest defender. Another penalty was given and the result was the same. Pellegrini stepped and did the job.
Night of unusual decisions
The drama didn’t stop there though as the Bulgarian side did get an equaliser with 10 minutes to play. It was then ruled out by VAR for a foul in the buildup. It was certainly an extremely tight call.
The result then seemed to be wrapped up in the 85th minute when Zaniolo got the goal that his involvement perhaps warranted. He beat two players and glided into the box before poking beneath the goalkeeper under pressure to make it 3-1.
Ludogorets had Olivier Verdon sent off at the end for treading on Nicola Zalewski’s face although replays showed he only had eyes on the ball that was coming into the box.
The result means that Roma go through in second place behind Real Betis whilst Ludogorets drop into the Europa Conference League.