The 22-year-old Italian broke Djokovic's serve twice in each of the first two sets but missed a match point in the third set of a 6-1, 6-2, 6-7 (6), 6-3 victory that earned him a place in a Grand Slam final for the first time.
He'll play either third-seeded Daniil Medvedev or No. 6 Alexander Zverev for the championship on Sunday.
Djokovic's bid for a record-extending 11th Australian and 25th major title overall will have to wait.
He hadn't lost a match at Melbourne Park since 2018 and was on a 33-match winning streak at the season's first major. Every previous time he'd won a quarterfinal in Australia, Djokovic had gone on to win the hardcourt title.