Stanislav Manolev had struck a magnificent opener to put the Bulgarians in front after half an hour, but a lightning double from Pablo Osvaldo just before the break looked to have swung the game the Italians' way.
The Italians had travelled to the Bulgarian capital with plenty of confidence and it appeared well-founded when they came close to opening the scoring after seven minutes, with Osvaldo heading a Sebastian Giovinco cross just over the bar.
More Italian pressure saw a succession of fouls by the Bulgarians, who were struggling to get the ball out of their own half until they had a mighty chance to sneak a shock lead in the 23rd minute.
Following a free-kick from Emil Gargorov, Ivan Ivanov hit a shot from 18 yards which Italy goalkeeper Gianluigi Buffon did brilliantly to tip round the post, while Vladimir Gadzhev's resulting corner was hacked clear by Andrea Barzagli.
It was just the boost the Bulgarians needed, and they enjoyed their best spell of the game with Buffon again called upon to punch away an inswinging corner from Gargorov just before the half-hour mark.
Two minutes later Manolev drilled home his spectacular opener from long range, blazing the ball past Buffon into the bottom-right corner of the goal. However, the visitors responded well to Bulgaria's opener and it took them only six minutes to get back on level terms when Osvaldo finished off Leonardo Bonucci's cross by firing home left-footed from close range.
Just three minutes later, Osvaldo had turned the match on its head with his second, a header from 12 yards after he met a pinpoint cross from Emanuele Giaccherini. Osvaldo should have completed his hat-trick on the stroke of half-time, though, when his shot from 18 yards was tipped over the bar by Nikolay Mihailov in the Bulgarian goal.
Mihailov was in action again early in the second half, parrying an effort from Giovinco as the Italians went in search of their crucial third, but it was the Bulgarians who looked more likely. Popov saw a shot blocked in the box by Barzagli, while both Milanov and Manolev had dangerous balls into the box beaten away by Giaccherini and Bonucci.
Bulgaria surge late
The Bulgarians grabbed their equaliser in the 66th minute when Iliyan Mitanski delivered a cross into the box and Milanov pounced with a left-footed shot high in the centre of Buffon's goal. The equaliser inspired the Bulgarians to launch a storming finish, Mitsanski heading just over the bar in the 69th minute and Mitsanski prodding a golden chance wide from close range two minutes later.
Manolev had a shot tipped over by the increasingly busy Buffon, who also saved from Ivan Ivanov, while all the Italians could muster in response was a long-range free-kick from Andrea Pirlo that was easily held.