The striker struck with two minutes of normal time remaining after Radja Nainggolan had cancelled out Hernanes' opener
Runaway leaders Juve started the weekend needing both Roma and Lazio to lose while also beating neighbours Torino on Sunday to clinch the crown, and Roberto Mancini's team duly obliged to ensure part one was completed, with Icardi hitting a dramatic winner for Inter in the 88th minute.
Roma had themselves appeared set for a title challenge before the winter break, but Saturday's defeat made it just four wins from a possible 16 in the league since the turn of the year, raising further question marks over the future of coach Garcia.
Hernanes' fine strike opened the scoring after 15 minutes and, although Victor Ibarbo struck the post shortly afterwards, the hosts were well worth their lead at the break.
Radja Nainggolan found the net with a well-struck effort just after the hour mark, seemingly securing a point for Roma.
But, Icardi spun and blasted home from close range with two minutes to go, boosting Juventus' hopes of clinching the title with a win over their city rivals on Sunday and leaving Roma in danger of a scrap with Napoli for third place.
Neither side could take control of the midfield battle during the early exchanges, resulting in an open and end-to-end start in Milan.
The visitors were the first to go close, as Daniele De Rossi's fierce 30-yard drive was parried away by Samir Handanovic in the Inter goal with six minutes gone.
The match's next chance produced the opening goal nine minutes later, as Hernanes created space for himself on the edge of the area and lashed a fine left-footed effort beyond the reach of Morgan De Sanctis.
As the momentum swung again, Roma almost hit back just four minutes later but Handanovic's right-hand post came to the rescue, with Ibarbo pouncing on a blocked shot and agonisingly missing the bottom corner.
The away side had little luck creating chances for the remainder of the first half, struggling to break down Inter's resolute backline, while the hosts also posed a threat on the counter-attack.
Roma began the second half with plenty of attacking intent, though, that only served to encourage Inter on the break, stretching Garcia's men twice in quick succession.
On both occasions, Icardi raced on to an incisive throughball from Assane Gnoukouri, but his first effort was blocked by Mapou Yanga-Mbiwa, before the Inter striker sliced wide soon after in the 51st minute.
Inter were made to rue those missed opportunities, as Nainggolan equalised with 63 minutes played.
Andrea Ranocchia's loose pass was seized upon by Miralem Pjanic and the crafty midfielder picked out a delightful ball to his right for Nainggolan, who smashed a shot into the bottom-left corner from 20 yards.
That looked to be that, and it seemed as though Juve would have to put the champagne on hold at least for one more weekend.
However, there proved to be one last twist as, with two minutes left, Icardi - who had been wasteful throughout the match - was allowed to turn inside the area and the striker drilled a low effort past De Sanctis, dealing a decisive blow to Roma and Garcia.