The world champion pulled clear of his adversaries in the final straight of the 206km stage to take a comfortable win ahead of Orica GreenEdge's Goss, with Frenchman Geoffrey Soupe of FDJ-Big Mat taking a surprise third and American Tyler Farrar (Garmin-Barracuda) fourth.
The victory was 26-year-old Cavendish's first in a Grand Tour for Team Sky and comes eight months after he became world champion in Denmark's capital city, Copenhagen.
American Taylor Phinney (BMC Racing), winner of Saturday's opening time trial, held on to the pink leader's jersey despite a late scare. Having slipped his chain inside the final 8km, Phinney was some 40 seconds off the back of the bunch and needed to use his time trialling ability to rejoin the group and preserve his 9sec lead over Geraint Thomas (Team Sky) in the GC.
A nasty crash in the final bend saw Rabobank's Theo Bos and Katusha's Alexander Kristoff clatter into the barriers, holding up a cluster of the race's main sprinters.
BMC's Thor Hushovd, the former world champion, started the final straight with gusto before being rounded by youngster Soupe. But Cavendish used all his experience, timing his final drive to perfection and holding off the challenge from former HTC-Columbia team-mate Goss with apparent ease.
On another cold day in Denmark, a group of three riders had jumped clear of the peloton just 10km into the stage - Italy's Alfredo Balloni (Farnese Vini), Belgian Olivier Kaisen (Lotto Belisol) and Colombian Miguel Rubiano (Androni) building up a maximum lead of 13:15 on the narrow, exposed Danish roads.
With 100km remaining as the riders rode alongside the west coast of Denmark, Team Sky brought their men to the front of the peloton to lead the chase, with Briton Ian Stannard typically strong.
The gap came down fast, the trio being swept up 40km from the finish - not before youngster Balloni secured the first blue mountains jersey of the race with victory in the fourth category sprint at Osterbjerg, moments after the feeding zone in Lemvig.
With the group swallowed up, there was time for a spirited yet short-lived counter-attack by local rider Lars Bak of Lotto Belisol before the race entered Herning for a 12.4km lap of the town centre.
While Phinney lived out his own drama off the back of the bunch, the teams of the sprinters started jostling for position.
Rabobank's hard work was cruelly undone by Bos's nasty fall and it was left to Welshman Thomas to lead out Sky team-mate Cavendish with expert precision.
It was Cavendish's eighth win in the Giro d'Italia and his first scalp since the birth of his daughter, Delilah.
The Giro d'Italia continues on Monday with the 190km stage three in and around the coastal town of Horsens in East Jutland. Another flat and fast finish bodes well for Cavendish.