Match ends, Roma 1, Lazio 3.
Juventus are four points away from a sixth successive Serie A title after nearest challengers Roma lost the Derby della Capitale to Lazio.
Roma, who had defender Antonio Rudiger sent off in stoppage time, fell behind to Keita Balde Diao's finish.
Daniele de Rossi equalised with a controversial penalty after Wallace was wrongly adjudged to have fouled Kevin Strootman.
Dusan Basta and Balde Diao struck in the second half to seal Lazio's win.
Roma's misery was compounded when Rudiger was shown a straight red card for a high challenge on Lazio forward Filip Djordjevic in the closing stages.
Second-placed Roma would have cut Juventus' lead to six points with a win but fourth-placed Lazio, who still have a chance of qualifying for the Champions League, were the dominant team throughout.
Replays showed there was no contact when Strootman went down to win a penalty.
Massimiliano Allegri's Juventus will secure the title if they win at home to mid-table Torino next Saturday (19:45 BST) and Roma fail to win away to AC Milan on Sunday, 7 May (19:45 BST).
Roma host Juventus in the league on 14 May.
Line-ups
Roma
Formation 4-3-3
- 1Szczesny
- 2RüdigerBooked at 90mins
- 44Manolas
- 20FazioSubstituted forPerottiat 64'minutes
- 33Emerson
- 6Strootman
- 16De RossiSubstituted forTottiat 73'minutes
- 4Nainggolan
- 11Salah
- 9Dzeko
- 92El ShaarawySubstituted forda Silva Peresat 45'minutes
Substitutes
- 3Nunes Jesus
- 5Paredes
- 7Grenier
- 8Perotti
- 10Totti
- 13da Silva Peres
- 15Vermaelen
- 18Lobont
- 19Alisson
- 21Mário Rui
- 30Santos da Silva
Lazio
Formation 3-5-1-1
- 1Strakosha
- 15Jacinto Quissanga
- 3de VrijSubstituted forHoedtat 74'minutesBooked at 81mins
- 13Fortuna dos Santos
- 8Basta
- 16ParoloBooked at 90mins
- 20BigliaBooked at 45mins
- 19Lulic
- 6J LukakuSubstituted forFelipe Andersonat 43'minutes
- 21S Milinkovic-Savic
- 14KeitaBooked at 87minsSubstituted forDjordjevicat 87'minutes
Substitutes
- 2Hoedt
- 4Gabarrón Gil
- 9Djordjevic
- 10Felipe Anderson
- 11Crecco
- 18Romero Alconchel
- 25Lombardi
- 26Radu
- 31Adamonis
- 55Vargic
- 96Murgia
- Referee:
- Daniele Orsato
- Attendance:
- 43,794
Match Stats
- Possession
- Home66%
- Away34%
- Shots
- Home12
- Away14
- Shots on Target
- Home6
- Away7
- Corners
- Home8
- Away5
- Fouls
- Home10
- Away10
Live Text
Post update
Full Time
Second Half ends, Roma 1, Lazio 3.
Dismissal
Antonio Rüdiger (Roma) is shown the red card.
Post update
Foul by Antonio Rüdiger (Roma).
Post update
Filip Djordjevic (Lazio) wins a free kick in the attacking half.
Booking
Marco Parolo (Lazio) is shown the yellow card for a bad foul.
Post update
Foul by Mohamed Salah (Roma).
Post update
Bastos (Lazio) wins a free kick in the defensive half.
Post update
Corner, Lazio. Conceded by Bruno Peres.
Post update
Attempt blocked. Sergej Milinkovic-Savic (Lazio) right footed shot from the centre of the box is blocked. Assisted by Felipe Anderson with a cross.
Post update
Radja Nainggolan (Roma) wins a free kick in the attacking half.
Post update
Foul by Felipe Anderson (Lazio).
Post update
Foul by Kostas Manolas (Roma).
Post update
Wesley Hoedt (Lazio) wins a free kick in the defensive half.
Post update
Emerson (Roma) wins a free kick on the left wing.
Post update
Foul by Marco Parolo (Lazio).
Substitution
Substitution, Lazio. Filip Djordjevic replaces Keita.
Booking
Keita (Lazio) is shown the yellow card for excessive celebration.
Goal!
Goal! Roma 1, Lazio 3. Keita (Lazio) right footed shot from the centre of the box to the bottom right corner. Assisted by Senad Lulic following a fast break.
Post update
Offside, Lazio. Thomas Strakosha tries a through ball, but Sergej Milinkovic-Savic is caught offside.