The England international, on a season-long loan from Manchester City, could do little about either goal.
Hart was beaten by Ciro Immobile's acrobatic volley, which cancelled out Iago Falque's opener for the hosts.
The 29-year-old conceded again when the unmarked Alessandro Murgia headed in from a corner but Adem Ljajic equalised from the penalty spot in added time.
Match ends, Torino 2, Lazio 2.
Second Half ends, Torino 2, Lazio 2.
Corner,  Lazio. Conceded by Antonio Barreca.
Attempt missed. Filip Djordjevic (Lazio) header from the centre of the box misses to the left. Assisted by Alessandro Murgia following a set piece situation.
Foul by Lucas Boyé (Torino).
Ciro Immobile (Lazio) wins a free kick in the attacking half.
Foul by Maxi López (Torino).
Wesley Hoedt (Lazio) wins a free kick in the defensive half.
Goal!  Torino 2, Lazio 2. Adem Ljajic (Torino) converts the penalty with a right footed shot to the bottom left corner.
Danilo Cataldi (Lazio) is shown the yellow card.
Penalty conceded by Marco Parolo (Lazio) with a hand ball in the penalty area.
Attempt saved. Leandro Castán (Torino) left footed shot from outside the box is saved in the centre of the goal.
Attempt blocked. Andrea Belotti (Torino) header from the centre of the box is blocked. Assisted by Iago Falque with a cross.
Corner,  Torino. Conceded by Filip Djordjevic.
Substitution, Lazio. Franjo Prce replaces Felipe Anderson.
Substitution, Torino. Lucas Boyé replaces Mirko Valdifiori.
Corner,  Lazio. Conceded by Leandro Castán.
Foul by Luca Rossettini (Torino).
Federico Marchetti (Lazio) wins a free kick in the defensive half.
Goal!  Torino 1, Lazio 2. Alessandro Murgia (Lazio) header from very close range to the centre of the goal. Assisted by Felipe Anderson with a cross following a corner.
Corner,  Lazio. Conceded by Joel Obi.
Corner,  Lazio. Conceded by Joe Hart.
Attempt saved. Danilo Cataldi (Lazio) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Ciro Immobile.
Hand ball by Maxi López (Torino).
Joel Obi (Torino) wins a free kick in the attacking half.
Foul by Danilo Cataldi (Lazio).
Attempt missed. Alessandro Murgia (Lazio) right footed shot from outside the box is too high. Assisted by Felipe Anderson.
Attempt missed. Andrea Belotti (Torino) right footed shot from outside the box is close, but misses to the left. Assisted by Maxi López.
Substitution, Torino. Maxi López replaces Marco Benassi.
Substitution, Lazio. Alessandro Murgia replaces Keita.
Joel Obi (Torino) wins a free kick in the defensive half.
Foul by Marco Parolo (Lazio).
Attempt missed. Iago Falque (Torino) left footed shot from outside the box is just a bit too high. Assisted by Joel Obi.
Attempt missed. Marco Benassi (Torino) left footed shot from outside the box is just a bit too high. Assisted by Adem Ljajic.
Corner,  Torino. Conceded by Wallace.
Substitution, Torino. Joel Obi replaces Daniele Baselli.
Andrea Belotti (Torino) wins a free kick in the defensive half.
Foul by Wesley Hoedt (Lazio).
Goal!  Torino 1, Lazio 1. Ciro Immobile (Lazio) right footed shot from the left side of the six yard box to the bottom right corner. Assisted by Felipe Anderson with a cross.
Delay over. They are ready to continue.
Goalkeeper Joe Hart was beaten twice but Torino scored in injury time to grab a point against Lazio in Serie A.