Simone Inzaghi’s side are in a battle to haul back rivals AC Milan in the Serie A title race but they end the campaign with at least one major domestic honour after a wild night at the Stadio Olimpico.
Nicolo Barella’s fine long range effort put Inter in front inside the first 10 minutes but Juventus stung back into action immediately after the restart.
A quickfire double from Alex Sandro and Dusan Vlahovic turned the tie in favour of the holders before Turkish star Hakan Calahanoglu powered home a penalty to send the game into extra time.
That swing in momentum proved crucial for Inter in the additional 30 minutes, as Ivan Perisic netted another spot kick for Inter, before the Croatian slammed home a spectacular fourth.
MORE: Where will the Coppa Italia final be held? Stadium, time, how to watch Juventus vs. Inter Milan
An incredible night in Rome as Inter Milan battled back to twice take the lead inside 90 minutes at the Stadio Olimpico before winning in dramatic style in extra time.
Barella’s early rocket was cancelled out by quick fire second half strikes from Sandro and Vlahovic, before Calhanoglu’s spot kick sent it to extra time and Perisic’s brace won it for Inzaghi.