Serie A leading scorer Ciro Immobile converted a contentious second-half penalty to set second-placed Lazio on the way to a 2-1 comeback win over Fiorentina that kept them four points behind leaders Juventus on Saturday.
Franck Ribery stunned the hosts with a solo goal in the 25th minute and Lazio were struggling to get back into the game until Felipe Caicedo went down under a challenge from goalkeeper Bartlomiej Dragowski and Immobile converted his 28th goal of the season in the 67th minute.
Luis Alberto grabbed the winner with seven minutes left to leave Lazio with 65 points, with Juve on 69, and keep the title race well and truly alive with 10 matches each to play.
Lazio, who saw a 21-match unbeaten run ended at Atalanta on Wednesday, were caught out when 37-year-old Ribery collected the ball on the left, slipped between two defenders, glided past a third and fired a shot past Thomas Strakosha.
The visitors nearly added another after halftime as Castrovilli saw a curling shot turned away by Strakosha and Rachid Ghezzal's chip hit the crossbar.
Despite more possession, Lazio were making little headway against Fiorentina's purple wall of defenders but they got a break when Caicedo intercepted a cross on his chest, then went down under a challenge from Dragowski.
Although replays suggested that the Ecuadorean fell before any contact was made, the referee pointed to the spot, there was no VAR review and Immobile sent Dragowski the wrong way.
They got another break seven minutes from time when the ball bounced into Luis Alberto's path and he fired a low shot past Dragowski.