Shaqiri treble sees Swiss beat Bulgaria
Ivan Ivanov opened the scoring for the visitors after nine minutes, but 19-year-old Shaqiri netted either side of half-time and Bulgaria's challenge was effectively ended when Zhivko Milanov saw red in the 65th minute.
Shaqiri added a third in the last minute, sealing a result which left Switzerland three points behind second-placed Montenegro in Group G with two games left to play.
The first chance of the game fell to Switzerland's Granit Xhaka in the seventh minute, but he volleyed over from 20 yards. At the other end Johan Djourou blocked Tsvetan Genkov's shot, but the visitors did not have to wait long to open the scoring as, from Martin Petrov's corner, the ball broke to Stiliyan Petrov.
His header found Ivanov, who converted from close range. Three times Shaqiri failed to find the target from outside the box as Switzerland went in search of an equaliser. However, it was fourth time lucky when deep into first-half stoppage time, Shaqiri latched onto a pass from Gokhan Inler to level matters heading into the interval.
Switzerland maintained the momentum after the break and Inler was denied first by Petar Zanev's block, then Nikolay Mihailov's save. For Bulgaria, Ivelin Popov fired wide but it was Switzerland who looked the more threatening side and they took the lead just after the hour mark.
Again it was Shaqiri, with Admir Mehmedi the provider this time for his 12-yard finish. Milanov then attracted the referee's attention for a foul on Inler and, having been booked for dissent in the first half, received a second yellow.
Shaqiri ensured Switzerland made the most of their man advantage, finishing from 20 yards to complete his hat-trick.