Roma was thwarted time and time again by Empoli goalkeeper Lukasz Skorupski, who is on loan from the capital club, as it was held 0-0 on Sunday and failed to keep pace with Serie A leader Juventus.
Skorupski flew to fingertip an Edin Dzeko header out from under the crossbar in the opening minutes and pulled off another spectacular save moments later to keep out Mohamed Salah's strike.
The Poland international's heroics continued throughout the match and when he was finally beaten, late on, Manuel Pasqual was on hand to clear Dzeko's header off the line.
Skorupski also fingertipped a Stephan El Shaarawy volley over the crossbar in stoppage time.
If Empoli manages to escape relegation it will owe a great deal to Skorupski and his defense, as Giovanni Martusciello's side has scored just two goals in 11 matches this season — the fewest in Europe's top five leagues.
Roma is four points behind Juventus, which beat Napoli 2-1 on Saturday.
Empoli moved level with 17th-placed Pescara, four points behind Sampdoria which hosts Inter Milan later.
AC MILAN 1 PESCARA 0
AC Milan is emerging as a serious challenger for the title and a fourth successive home win saw it leapfrog Napoli into third place, five points behind Juventus.
And it again had teenage goalkeeper Gianluigi Donnarumma to thank.
While fellow youngster Manuel Locatelli stole the headlines in last weekend's win over Juventus, Donnarumma pulled off several stunning saves to protect his side's lead.
The 17-year-old kept Ledian Memushaj's strike from going into the top corner shortly after the hour with a flying one-handed save and was again at full stretch to deny Gianluca Caprari late on.
Giacomo Bonaventura scored the only goal of the match, four minutes into the second half, placing a cheeky free kick under the wall as it jumped and into the bottom left corner.
Milan also hit the woodwork in each half, through a M'Baye Niang header and a Carlos Bacca close-range strike.
CROTONE 2 CHIEVO VERONA 0
Bottom club Crotone recorded its first ever Serie A victory although there was an unseemly spat over who was to take the penalty that led to the first goal.
Lucas Castro brought down Djamel Mesbah on the stroke of halftime and Marcello Trotta converted, after arguing with Diego Falcinelli over who was to take the spot kick and shoving each other.
Falcinelli got on the scoresheet in stoppage time with a powerful strike to seal the result and spark rapturous celebrations in the stadium.
Crotone moved onto five points, two from safety.