Fiorentina missed the chance to go top of Serie A as Lazio battled to a 3-1 win at the Stadio Artemio Franchi, where there was a late flurry of stoppage-time goals.
The Viola went into Saturday's match only a point off leaders Inter Milan, who host Sassuolo on Sunday, and ahead of Napoli on goal difference.
However, aspirations of being crowned Campione d'Inverno at the half-way stage of the campaign failed to materialise as Lazio marked the club's 116th anniversary with only a second league win in 10 games.
Keita's late first-half goal looked to have been enough for a hard-earned victory for the visitors, before Sergej Milinkovic-Savic -- who could have signed for Fiorentina in summer --made it 2-0 at the start of six minutes of added time.
Viola defender Facundo Roncaglia immediately reduced the deficit when a speculative long-range effort squirmed under Lazio keeper Etrit Berisha, before substitute Felipe Anderson -- a reported Manchester United target -- then swept home a third on the break for the Biancocelesti.
After a promising start from the home side, it was Lazio - defending an impressive away record in Florence -- who grew in confidence as Milinkovic-Savic's looping header was cleared off the line, before Keita netted with a low, 18-yard drive in first-half stoppage time.
There was a delay midway through the second half after Fiorentina midfielder Milan Badelj fell awkwardly and had to be carried off on a stretcher.
Fiorentina defender Marcos Alonso's header was cleared from under the crossbar and Giuseppe Rossi was twice denied by Albanian stopper Berisha before the stoppage-time goal spree.