Juan Jose Lobato (Movistar) placed second, with Monday’s stage winner Peter Sagan (Cannondale) in third.
It’s Cavendish’s ninth win of the season, having previously taken stages in the Tour of Turkey, Tour of California, Tirreno-Adriatico and Tour of the Algarve.
Race leader Tony Martin (Omega Pharma-QuickStep) could be seen working for Cavendish during the stage, and finished in the peloton to retain his position at the top of the general classification.
Laurens De Vreese (Wanty-Groupe Gobert) and Daniel Teklehaimanot (MTN Qhubeka) joined forces to make the escape of the day, although they were never let off the leash and only pushed out a gap of three minutes at the break’s peak. The duo were reeled in with 10 kilometres to go to set up a bunch finish.
A succession of teams took to the front of the peloton in the finale kilometres of the day, but Cavendish’s Omega Pharma squad took control when it counted.
Sagan evidently fancied his chances on the slight rise to the finish line, and with a couple of hundred metres to go looked to be in a commanding position. However, Cavendish used his ‘second kick’ to accelerate away from all of his rivals and win by several bike lengths. That he beat Sagan on such a finish will also prove to be a huge confidence-booster for Cavendish ahead of the Tour de France.
Bradley Wiggins (Sky) crashed heavily during the stage, injuring his knee. Although he remounted slowly and concluded the stage some 11 minutes and 55 seconds after Cavendish, only time will tell if there are any lingering injury problems for the 2012 Tour winner.
There was also a crash in the neutralised zone at the stage start. Daniele Ratto (Cannondale) was forced to retire due to injuries sustained in the incident.
The riders face another hilly day on Wednesday on stage five, running from Ossingen to Buren an der Aare and featuring four categorised climbs along its 184km route.
Tour de Suisse 2014, stage four: Heiden to Ossingen, 160km
1. Mark Cavendish (GBr) Omega Pharma-QuickStep in 3-35-03
2. Juan Jose Lobato (Spa) movistar
3. Peter Sagan (Svk) Cannondale
4. Sacha Modolo (Ita) Lampre-Merida
5. Alexander Kristoff (Nor) Tinkoff-Saxo
6. Danny Van Poppel (Ned) Trek Factory Racing
7. Jonas Van Genechten (Bel) Lotto-Belisol
8. Davide Appollonio (Ita) Ag2r
9. Jose Joaquin Rojas (Spa) Movistar
10. Matthew Goss (Aus) Orica-GreenEdge all same time
Overall classification after stage four
1. Tony Martin (Ger) Omega Phrma-QuickStep in 14-19-41
2. Tom Dumoulin (Ned) Giant-Shimano at 6 secs
3. Peter Sagan (Svk) Cannondale at 10 secs
4. Bauke Mollema (Ned) Belkin at 17 secs
5. Tom Jelte Slagter (Ned) Garmin-Sharp at 23 secs
6. Davide Formolo (Ita) Cannondale at 27 secs
7. Jon Izaguirre (Spa) Movistar at 27 secs
8. Roman Kreuziger (Cze) Tinkoff-Saxo at 28 secs
9. Mathias Frank (Swi) IAM Cycling at 29 secs
10. Mattia Cattaneo (Ita) Lampre-Merida at 29 secs
Peter Sagan takes sprint after a hilly day in Switzerland, Tony Martin keeps race lead
Cameron Meyer wins from three-man escape, as Tony Martin holds on to race lead
Bradley Wiggins finishes stage one in 14th place as time trial world champion Tony Martin dominates in Switzerland