Fabio Grosso opened the scoring in the 11th minute before his Juventus team-mate Vincenzo Iaquinta doubled the Azzurri's lead shortly before half-time. The outcome sees the world champions go four points clear at the top of Group Eight and leaves them needing just a point away to second-placed Republic of Ireland in October to go through.
The Italians looked much improved from their fortunate 2-0 triumph over Georgia on Saturday and closer to the sort of form which took them to the world title in 2006. Having struggled in front of goal in their last four games, boss Marcello Lippi opted to start with Alberto Gilardino alongside Iaquinta up front, relegating Giuseppe Rossi to the bench.
The Azzurri enjoyed a strong start and Claudio Marchisio came close to opening the scoring in the fourth minute but his close-range effort was met by a fine save from Bulgaria goalkeeper Dimitar Ivankov. It was not long before the Italians broke the deadlock, however.
An inspired Grosso, playing in his new home stadium having joined Juve from Lyon last week, exchanged a one-two with Andrea Pirlo before firing a left-footed volley from 12 yards past Ivankov. The Azzurri should have made it 2-0 shortly after when Iaquinta latched onto Gianluca Zambrotta's cross but pulled his shot wide.
The visitors should have equalised on 26 minutes but Italy goalkeeper Gianluigi Buffon produced a stunning save from Stiliyan Petrov's close-range header. On the half-hour mark, the head of Iaquinta met Pirlo's free-kick but his effort went high over the crossbar. Shortly after, Iaquinta latched onto Pirlo's cross but his header too was off target.
Italy continued to surge forward and their efforts were rewarded five minutes before the break. Iaquinta played a one-two with Gilardino and then lashed a diagonal shot past Ivankov. Bulgaria responded well and Chavdar Yankov tried his luck from distance but his blast went wide in what was the last chance of the first half.
The visitors almost reduced the deficit after the restart but Stiliyan Petrov's header from Martin Petrov's cross went just high over the bar. Lippi made his first substitution on the hour mark, with Rossi replacing Gilardino. The USA-born striker twice tested Ivankov with two powerful strikes which the keeper saved.
At the other end, Buffon was forced to fully stretch to clear Blagoy Georgiev's fierce free-kick. Shortly after, Marchisio found no takers for his dangerous low cross towards the far post.
With 15 minutes remaining, Dimitar Berbatov got past his marker, surged inside the area and fired inches high over the crossbar. Georgiev then tried his luck from long range but his shot flew high over the bar and Italy held on for their sixth victory in qualifying.
The result leaves Stanimir Stoilov's side third in the pool, eight points behind Italy with two games remaining.