Di Carlo started his playing career in his native city, playing for the local Serie C2 team Real Cassino. After a number of seasons played for Treviso, Ternana, Como (where he never appeared in the first team lineup) and Palermo, where he helped the team to obtain a promotion to Serie C1, Di Carlo signed for Serie C1 team Vicenza in 1990. He quickly became one of the key players for the team, with whom he played 9 seasons, obtaining two promotions (from Serie C1 to Serie A), one Coppa Italia and reaching the Cup Winners' Cup semifinals the following year. He left Vicenza in 1999, when he joined Lecce, again in Serie A. His actual last playing season was in 2000/2001 for Livorno of Serie C1, even if on November he joined for a very short time Südtirol of Serie C2.
After a period back to Vicenza, where he coached the Primavera youth team, Di Carlo was signed as coach of Serie C2 team Mantova on 2003. He was able to lead the team to back to back promotions leading Mantova to Serie B for the first since a number of decades. His first Serie B season as coach was even better, as his team obtained surprisingly a place in the promotion playoff finals, where was then defeated by giants Torino F.C. after extra time. He coached Mantova also in their 2006–07 Serie B campaign, leading to eighth place but being the first side to defeat Juventus in its first appearance in the division. In June 2007 he left Mantova.
On 12 June 2007 he was confirmed as the head coach of Serie A team Parma. In his time at Parma, he struggled to keep the crociati off the relegation zone, only to be ultimately sacked on 10 March 2008 following a 1–2 home loss to Sampdoria.
On 4 November 2008 he was appointed as new Chievo boss following the dismissal of previous coach Giuseppe Iachini. He guided Chievo to two consecutive mid-table placements in the Serie A, which were hailed as an impressive results, considering the difficulty of competing against more renowned teams with one of the lowest budgets in the league. On 26 May 2010 Di Carlo was confirmed to have resigned from his coaching post at Chievo.
On the same day, he was then announced as new head coach of Sampdoria, with whom he made his managerial debut at the European stage in the third qualifying round of the 2010–11 UEFA Champions League and then the 2010-11 UEFA Europa League. Sampdoria's form in the Serie A so far has been middling, with the Blucerchiati keeping a tight defense, but struggling to score, especially after the departures of Antonio Cassano and Giampaolo Pazzini. He was sacked on 7 March 2011 after home loss for 3–2 with the Cesena, the last match of a run of ten games that included seven losses and just one win. He was replaced by Alberto Cavasin on the same day.
On 9 June 2011 Di Canio agreed to return to serve as head coach of ChievoVerona for the 2011–12 season. He saved his team from relegation in his first season in charge, but was removed from his duties on 2 October 2012 and replaced by Eugenio Corini following a dismal start in the 2012–13 season.