Tranquillo Barnetta's delightful finish and Mario Gavranovic's second goal in as many games took Switzerland three points clear at the top of Group E with 10 points from four games.
Iceland had already pulled off shock wins against Norway and Albania and looked capable of an even bigger upset for the first hour.
Gylfi Sigurdsson had a free kick tipped over by Diego Benaglio early on, and the Swiss goalkeeper also did well to stop Alfred Finnbogason's close-range effort just before the break.
Iceland, who have six points, went even closer early in the second half when Birkir Bjarnason eluded two defenders and struck his shot against the crossbar.
Switzerland, held 1-1 at home by Norway on Friday, were too anxious until Barnetta collected the ball on the edge of the area, side-stepped two defenders, and curled an exquisite shot into the far corner in the 66th minute.
Finnbogason nearly levelled when his diving header was tipped away by Benaglio before Gavranovic sealed the points, turning in Stephan Lichtsteiner's mis-hit shot from close range in the 79th minute.
Iceland's physical approach earned them five yellow cards and they were lucky to finish with all 11 players on the pitch.
CYPRUS 1-3 NORWAY
Norway secured a 3-1 win in Cyprus to stay three points behind the Swiss in Group E.
Efstathios Aloneftis opened the scoring for the home side on 42 minutes in Larnaca only for Brede Hangeland to equalise two minutes later.
Tarik El Younoussi converted an 81st-minute penalty to put Norway ahead and Joshua King sealed the points two minutes further on.
Cyprus stay bottom of the group.
ALBANIA 1-0 SLOVENIA
Albania beat Slovenia 1-0 in Tirana to go third, level with Iceland on six points.
Odise Roshi was on target on 36 minutes to leave Slovenia fifth of the six teams.