Sprinting from behind Alexander Kristoff (Katusha), Degenkolb was able to come over the top of the Norwegian in the final metres to claim victory in the bunch sprint.
The German sprinter and classics star finally managed to claim a win after two second places earlier in the race, behind Kristoff in Stage 1 and Danny van Poppel (Team Sky) in Stage 2.
Gianni Moscon (Team Sky) finished on bunch time and after his Stage 3 hilltop win, claimed the general classification (GC) victory by 15 seconds from Stef Clement (IAM cycling) and 30 seconds ahead of Oscar Gatto (Tinkoff).
As it happened
The 193km stage started in Rana Kommune, heading north over undulating, scenic roads to the coastal town of Bodo, where four laps of a finishing circuit were raced by the peloton.
It was a hard fight in the bunch to form the breakaway and when it eventually broke clear it was never allowed much time with both GC and sprinter’s teams riding hard behind.
Four members of the breakaway made a threatening attempt at staying away as the race neared its closing stages, but they were absorbed back into the bunch with 2.5 kilometres to go.
Giant-Alpecin hit the front with just over 2 kilometres left, keeping Degenkolb where he needed to be for the run-in.
Keeping out of the wind on the barriers, Degenkolb waited for his competitors to jump first, before latching onto their wheels and coming around in the closing metres to take the win.
"It's a great relief to get the victory, and it took a lot of energy, almost as much as winning a Monument," said Degenkolb after the finish.
"I'm super happy to not be alone here as the team did an awesome job, incredibly good. They timed the lead-out perfectly and I was able to finish it off with good legs in the end."
"I was really close to the win twice already this week but it didn't work out, and then today it went fine and we did a great job."
"It's his first win of the season and after his comeback so it's a special win, he really deserved it," said coach Dirk Reuling.
"There was a really hard fight in the beginning, before the first climb, then on the climb it was more controlled but BMC made it really hard and the peloton split."
"John was in the second split and so we had to race hard for a long time to bring it back. The team worked really well there and everything came back together."
When the six riders were away, we put Max Kanter in the chase (at head of peloton), we saw he was really strong earlier in the week, and gave him the role of helping bring the gap down, which worked out. Then at the end the guys did a great lead-out and John finished it off."
Off to Trek-Segafredo
John Degenkolb will only be in Giant-Alpecin colours for a few more months with his transfer to Trek-Segafredo announced just after the transfer period opened.
Degenkolb will spearhead the team's classics ambitions with the departure of Fabian Cancellara and joins the team alongside long-time team-mate and friend Koen de Kort.