Tammy Abraham scored the winner for Roma after Paulo Dybala’s opener was cancelled out by Filippo Bandinelli.
The visitors started brightly and almost went ahead in the opening stages through Dybala who latched onto a loose ball inside the penalty area but his effort crashed off the post with Guglielmo Vicario beaten.
There was no stopping the Argentine though as he found the back of the net in the 17th minute through a brilliantly placed shot from the edge of the box to give his side a deserved lead.
Empoli did have their moments as well with Martín Satriano heading his effort off the post to send a stern warning to Roma before Bandinelli equalised in the 43rd minute by perfectly guiding a Petar Stojanovic cross past Rui Patrício.
The goal sprung Empoli to life and the hosts started the second half on the front foot. Satriano was sent through on goal with a perfect pass by Jean-Daniel Akpa Akpro but the striker fired his shot wide with only the goalkeeper to beat.
Roma made them pay for the mistake by finding the winner when Dybala crossed the ball for Abraham who fired the winner in the 77th minute. They had the chance to add to their scoreline but Pellegrini missed a penalty before Belloti failed to score one-on-one with the keeper in the final stages.
With the win, Roma moved to fifth on the table with 13 points. They will host the second-placed Atlanta in their next fixture while Empoli slip to 16th in the standings still looking for their first win of the season.