The last remaining Serie A representatives in European competition this season held a commanding position heading into the return fixture, having won 2-1 in Amsterdam a week earlier.
But Roma largely lacked ambition at the Stadio Olimpico and invited Ajax to chase the two away goals they required, the first arriving when substitute Brian Brobbey beat Pau Lopez four minutes after half-time.
A second soon after was disallowed, though, and Edin Dzeko struck to restore parity on the night and set up a semi-final against Manchester United.
Roma might have quickly taken the tie away from Ajax when Lorenzo Pellegrini ran from halfway following Dzeko's pass and easily skipped past Sean Klaiber, only to send a tame shot into the hands of Maarten Stekelenburg.
Jordan Veretout then had the ball in the net but was flagged offside, before Ajax secured a foothold with the help of some nervy Roma goalkeeping.
Lopez's kick was intercepted by Antony, who teed up Davy Klaassen for an effort that was well blocked by Amadou Diawara. From a similar position, Dusan Tadic shot too close to the keeper.
Lopez was punished for his next mistake, as he was beaten to Perr Schuurs' long and searching pass by Brobbey, who smartly knocked the ball beyond the Spain international into an open goal.
Only a VAR review denied Ajax a swift second, with a foul on Henrikh Mkhitaryan identified before Lopez parried Brobbey's shot straight to Tadic for a simple finish.
But Roma belatedly responded and Ryan Gravenberch inadvertently deflected Riccardo Calafiori's cross into the path of Dzeko, who made no mistake.