Despite their poor form in Serie A, Gennaro Gattuso's charges were ahead after just two minutes through Lorenzo Insigne, who turned home a cross from Pior Zielinski.
Lazio were afforded a chance to restore parity after being awarded a penalty seven minutes later, although the in-form Ciro Immobile sent his spot-kick over the crossbar.
The game turned on it's head in the 19th minute when the home side had Elseid Hysaj sent off after the defender picked up his second yellow in the space of 11 minutes.
Six minutes later, Lazio were reduced to 10 men as Lucas Leiva received his marching orders for picking up two yellow cards in quick succession - first for a poor challenge and the second for dissent.
In an attempt to claw their way back into the contest, Felipe Caicedo was introduced 10 minutes after the halftime break in place of Joaquin Correa while Gattuso withdrew Jose Callejon for Elmas minutes later.
Filipo Inzaghi's men threw everything forward in search of an equaliser for the remainder of the second half but they were met a solid defence and goalkeeper David Ospina.
Howevr, Insigne's second-minute strike proved to be the difference on the night as the Naples outfit book their spot in the last four.