The result gave Milan 48 points from 23 matches. Juventus are on 50 after losing 1-0 at Palermo on Saturday.
Milan appeared to be on the verge of their third defeat in four matches when Massimo Oddo put Lazio ahead from the penalty spot in the 56th minute following Jaap Stam's foul on Tommaso Rocchi.
With 18 minutes remaining, however, a superb 30-metre free kick by European Footballer of the Year Andriy Shevchenko put the hosts level.
In the final minutes, Milan besieged the Lazio goal, Cafu and Stam blazing shots narrowly over the bar and Lazio keeper Angelo Peruzzi smothering a Crespo header at his near post.
It seemed the visitors would hold out for a point but, in the fourth minute of stoppage time, Crespo sealed a last-gasp victory by poking home the rebound after a Kaka shot struck the post.
"After the Juventus result, tonight was fundamental for us," Shevchenko told satellite broadcaster SKY Italia afterwards,
"In the first half Lazio defended very well and it was very difficult to find any holes. Then, as the second half wore on they got tired and we got more space.
"It was very important to equalize quickly. We also had a bit of luck with that goal in the 94th minute."
Earlier in the day, 10-man Inter Milan preserved their unbeaten Serie A record in dramatic fashion, fighting back from two goals down to draw 2-2 at Parma.
The result lifted Inter to 39 points from 23 matches, but could not save them from surrendering third place in the division to Udinese, who climbed to 40 points after a 1-0 victory over lowly Brescia.
Brescia barely broke out of their half but resisted stubbornly until the 85th minute, when Vincenzo Iaquinta struck the winner.
Though Inter have made up ground on Juventus and AC Milan, they came up against a Parma side that hadwon three of their previous five games to give themselves a good chance of escaping the relegation zone.
Inter began aggressively with Juan Sebastian Veron twice firing narrowly wide in the opening minutes.
The balance of the match swung in the 14th minute, when a Parma counter-attack ended with striker Mark Bresciano crashing the ball off the bar.
That signalled the start of a period of pressure by the home side culminating 20 minutes later when Inter defender Marco Materazzi stuck out a hand to prevent a Bresciano shot crossing the line, earning himself a red card.
The ensuing Parma penalty was converted by Fabio Simplicio.
Inter's hopes of salvaging anything from the encounter looked even slimmer when Italy international Alberto Gilardino beat keeper Hector Carini with a superb overhead kick on the hour.
However, Inter refused to buckle and were rewarded in the 76th minute when defender Ivan Cordoba nodded a Sinisa Mihajlovic free kick past Frey.
Cordoba was at the centre of the action again five minutes later when he was pushed to the ground by Parma defender Daniele Bonera.
Referee Pierluigi Collina pointed to the penalty spot and Christian Vieri's conversion, his 100th Serie A goal for Inter, consolidated their reputation as Serie A's comeback kings.
Sixth-placed AS Roma continue to have problems hanging on to the lead as, for the second game in a row, they surrendered their initial advantage to draw 1-1 with Bologna.
Roma seemed to be in control of the match when Vincenzo Montella rounded keeper Gianluca Pagliuca to put them ahead after nine minutes.
However, in the 62nd minute, Luigi Della Rocca took advantage of Roma's failure to clear a low cross to slide in an equaliser at the near post.
Elsewhere, Reggina maintained their unbeaten start to 2005, when they came back from 3-1 down to draw 3-3 with Siena, while bottom-placed Atalanta grabbed their second win of the season by beating Livorno 1-0.