Daniele De Rossi converted the winning penalty against Bulgaria, but also received his second red card for Italy.
The Azzurri were criticised after scraping past Malta 1-0 on Thursday, so Antonio Conte made several changes, bringing in Stephan El Shaarawy, Mattia De Sciglio, Marco Parolo, Daniele De Rossi and Antonio Candreva. With Norway beating Croatia 2-0, a victory was needed to stay top of Euro 2016 qualifying Group H.
Gigi Buffon made his 150th appearance for Italy and it was a spectacular start, as within 48 seconds Graziano Pellè forced a desperate save and El Shaarawy’s overhead kick landed on the roof of the net.
Candreva was tripped by Menev for a penalty and De Rossi coolly converted twice, as it had to be retaken due to encroachment.
The Azzurri were unusually fired up and playing at a high tempo, but Buffon needed a fine one-handed save when Ilian Mitsanski went on the counter.
Pellè nodded a Marco Verratti free kick just over and Mattia De Sciglio forced a tough save after great build-up work from Candreva and Matteo Darmian. Pellè and Candreva also fired volleys off target, then the Lazio man scuffed a finish straight at the goalkeeper when set up by the Southampton striker.
Just before half-time Pellè knocked down a chipped Verratti pass, but Marco Parolo’s volley from 12 yards was crucially blocked by a brave last-ditch tackle.
Straight after the restart El Shaarawy set up Parolo, whose deflected shot forced a difficult save from Bozhidar Mitrev.
There was a flashpoint on 55 minutes when Mitsanski lightly trod on De Rossi’s leg, so the Roma midfielder reacted by kicking out. Both were sent off for unsporting behaviour, reducing the two teams to 10 men.
De Rossi was also dismissed in the 2006 World Cup, meaning he joined Franco Causio and Giancarlo Antognoni as the only Italy players to see red twice.
Todor Nedelev curled just over in a rare Bulgaria attack, while Mitrev crucially rushed off his line to block El Shaarawy after a splendid Candreva through ball.
The Little Pharaoh was on fine form and his curler was smothered, but for all the domination, it was still only 1-0. Alessandro Florenzi came on to play right side of the attacking trident, having been used as a right-back at Roma.
Leonardo Bonucci nodded a Florenzi free kick over from point-blank range and, as so often happens with Italy, there were nervous final moments because wasted opportunities left the result open.
Deep into stoppages, Milanov found a gap in the Azzurri defence and unleashed a fierce strike that Buffon punched away for a corner.
Italy 1-0 Bulgaria
Scorers: De Rossi pen 6 (I)
Italy: Buffon; Darmian, Bonucci, Chiellini, De Sciglio; Verratti, De Rossi, Parolo; Candreva (Eder 86), Pellè (Zaza 71), El Shaarawy (Florenzi 72)
Bulgaria: Mitrev; Y Minev (Bandalovski 63), A Aleksandrov, Bodurov, V Minev; Dyakov, Chochev; Nedelev (M Alexandrov 67), Popov (Rangelov 71), Milanov; Mitsanski
Ref: Karasev (RUS)
Sent off: De Rossi 55 (I), Mitsanski 55 (B)