Lazio fumbled a Manuel Lazzari opener and wasted chances to consolidate their lead, falling apart in the second half yet again to lose 2-1 at Celtic Park.
Qualification is tricky now, as Celtic break away at the top on seven points, Cluj follow with six and Lazio have three, defeated already against both these teams on their travels.
Ciro Immobile was rested and Adam Marusic suspended at Parkhead, but the hosts missed Olivier Ntcham and Jeremie Frimpong, bringing Ryan Christie back from his domestic ban.
Christie almost scored on 16 minutes, his snapshot from outside the box clipping the far post with Thomas Strakosha beaten.
James Forrest tried to shimmy in the penalty area, but Francesco Acerbi was not falling for any of it, while Strakosha rushed off his line to push a through ball off the feet of Odsonne Edouard.
Bastos was everywhere, making blocks on a series of efforts from Edouard and Callum McGregor, but Lazio took the lead on the counter.
Joaquin Correa threaded through to release Lazzari down the right and his ferocious finish found the roof of the net from the tightest of angles.
The tempo was slower in the second half, which suited the Biancocelesti, but there was still a scare on the hour mark. Bastos and Lucas Leiva gave the ball away cheaply, so were fortunate Denis Vavro was there to block the shot from Christie almost in front of an open goal.
Lazio thought they’d made it 2-0 on 65 minutes when Sergej Milinkovic-Savic sent Correa clear and the Argentine squirmed between three defenders to get the shot away, only to then thump the upright of an open goal.
Moments later, they were made to pay for that error, because Celtic got their equaliser. Edouard rolled across from the left and just inside the penalty area, Christie swung his left boot to send the finish looping over Strakosha.
Lazzari flew down the left to set up Milinkovic-Savic, but the strike was too weak and charged down by Hatem Elhamed in the box.
Bastos was fortunate to only receive a yellow card on 76 minutes for his studs-up tackle on McGregor.
It was wide open and Lazzari a constant danger, as he rolled across the six-yard box for Marco Parolo, forcing a desperate Fraser Forster save from point-blank range at the near post.
Ciro Immobile came off the bench and did everything right except the finish, as he completed a give-and-go with Caicedo only to get the angle of the shot all wrong.
Once again, Lazio were made to pay for their errors. They gave the ball away cheaply for a corner and defender Christopher Jullien was allowed a free header to turn the game around completely.
Just like the opener against Cluj, the Aquile took the lead only to fall apart in the second half. They really thought it was 2-2 with the last kick of the game when Danilo Cataldi hit a spectacular volley from the edge of the box, but Forster flew to somehow push it out of the near top corner.
Celtic 2-1 Lazio
Lazzari 40 (L), Christie 67 (C), Jullien 89 (C)
Celtic: Forster; Elhamed (Bitton 83), Ajer, Jullien, Bolingoli-Mbombo (Hayes 85); Forrest, Brown, C McGregor; Christie, Edouard, Elyounoussi (Rogic 66)
Lazio: Strakosha; Bastos, Vavro, Acerbi; Lazzari, Parolo, Leiva, Milinkovic-Savic, Jony (Lulic 68); Caicedo (Cataldi 85), Correa (Immobile 72)
Ref: Bebek (CRO)
Watch Serie A live in the UK on Premier Sports for just £11.99 per month including live LaLiga, Eredivisie, Scottish Cup Football and more. Visit: https://subscribe.premiersports.tv/