Lautaro Martinez fired the visitors into a half time lead before Sergej Milinkovic-Savic nodded in an equaliser.
But the hosts went a man down for the final 20 minutes after Ciro Immobile saw red for a slap on Arturo Vidal, before Stefano Sensi earned the same punishment for a shove on Patric late on.
The result leaves Inter with seven points from their opening three games, while Lazio have picked up four.
Lazio threatened early on when Joaquin Correa headed over an inviting Manuel Lazzari cross from six yards, before Luis Alberto’s drilled effort required a sharp reaction save from Samir Handanovic.
But Inter struck first on the half-hour mark, when Ivan Perisic cut in from the left and the ball bundled into the path of Martinez, who reacted quickly to spin and fire in from close range.
Lazio weren’t having much luck as Stefan Radu and Adam Marusic were forced off with injuries in the first half, before Radu’s replacement Bastos also limped off on the brink of half-time.
Romelu Lukaku was inches away from doubling Inter’s lead straight after the restart, when his curling shot flew narrowly wide, before Martinez fired off target from 12 yards.
But the hosts drew level against the run of play when Milinkovic-Savic rose to head in a deep cross from Francesco Acerbi.
Lazio burst into life after the goal, with Alberto drawing a sharp save from Handanovic before Immobile blasted over at the end of a well-worked set piece.
But the home side’s momentum was abruptly halted on the 69th minute, when Immobile went down under a challenge from Arturo Vidal and lashed out with his hand when the Chilean approached him, earning the Lazio captain a straight red card.
Inter went looking for a winner and came agonisingly close when substitute Marcelo Brozovic’s shot took a heavy deflection and came back off the foot of the post.
Just moments later it was the Nerazzurri’s turn to lose their heads when replacement Stefano Sensi shoved Patric in the neck to earn a red card.