A four man group had broken away on the 198km stage from Davos but were pulled back by the peleton with four kilometres left.
Garmin's Ryder Hesjedal went for it in the final three kilometres only for Team Colombia to catch him and set up Cavendish who duly obliged by getting to the line first ahead of Oscar Freire, Thor Hushovd, Francesco Gavazzi and Jose Joaquin Rojas for his 11th win of the season.
Saxo Bank's Fabien Cancellara is the leader in the General Classification.
Stage Four tomorrow is from Biasca to Stafa and is 195km long.