The nine-time Coppa champions have won only twice since the turn of the year and it proved another frustrating outing against Fiorentina, as Gomez netted twice in the final 25 minutes upon the visitors' return to the scene of last season's final defeat.
Rudi Garcia's side dictated much of the first half, though, and saw good opportunities wasted by both Alessandro Florenzi and former Fiorentina star Adem Ljajic.
The away side started to become something of a nuisance with their persistent fouling in the lead up to the break and they continued to irritate Roma with their physical approach after half-time.
Vincenzo Montella's men made the most of Roma's creative struggles and broke the deadlock 25 minutes from time, Gomez directing Manuel Pasqual's cross into the net.
Garcia opted to introduce Victor Ibarbo for his debut 17 minutes from time, but the tricky Colombian made little impact and Gomez exploited Roma's weariness at the back in the 88th minute to secure a semi-final berth.
Roma began the clash like a side with a point to prove, moving the ball quickly and pouring men forward in urgent fashion.
It took the hosts just eight minutes to craft their first clear chance and Florenzi should have done better, as the attacking midfielder prodded wide after latching on to Radja Nainggolan's clever scooped pass.
Roma almost proved to be their own worst enemies seven minutes later, though Kostas Manolas did well to bail Lukasz Skorupski out of trouble after the goalkeeper's sliced clearance went straight to the lurking Gomez.
And the hosts were causing problems at the other end again soon after, with Ljajic firing agonisingly wide of the left-hand post following Francesco Totti's perfectly weighted throughball.
Fiorentina eventually began to frustrate the home side, however, committing a series of niggling fouls to upset Roma's rhythm.
Though, Ciprian Tatarusanu was forced into action with half an hour gone, palming the ball away after Nainggolan's powerful effort took a wicked deflection off Ashley Cole.
The visitors looked bright at the start of the second half and Alessandro Diamanti went close to finding the net with 48 minutes on the clock, lashing a 20-yard volley just wide after fine link-up play between Milan Badelj and Joaquin on the right flank.
Roma's inability to make the most of their possession saw Leandro Paredes withdrawn for the creative Miralem Pjanic, but the Bosnian struggled to make an impact.
And things got even tougher for Roma in the 65th minute, as Gomez flicked Pasqual's near-post delivery beyond Skorupski.
Garcia added debutant Ibarbo to his frontline in the final 20 minutes as Roma desperately pushed men forward, but Fiorentina capitalised on openness at the back, as Gomez showed admirable composure in the area before blasting past Skorupski.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.