The Giant-Alpecin rider, who won Milan-San Remo in March, out-sprinted Zdenek Stybar (Etixx-QuickStep) and Greg van Avermaet (BMC) in a six-rider sprint in the historic Roubaix velodrome.
Spurred on by the disappointment of finishing second in 2014, Degenkolb launched a massive solo effort with eight kilometres to go to bridge to the two leaders - van Avermaet and Yves Lampaert (Etixx-Quick-Step) - to ensure he would be fighting for victory on the velodrome.
Unbelievable. I can't believe it right now. I had to work very hard for it. We knew that it was going to be hard if a big group goes to the finish. In my situation I had to go, otherwise the situation from last year would have happened. I had to invest something. I was not afraid to fail and that was the key. - John Degenkolb.
Despite the two reduced leading groups coming together in the final kilometre to form a seven rider group, there was no doubt that Degenkolb was the fastest, with the German opening his sprint his first.
Degenkolb is the first person since Sean Kelly in 1986 to win both Milan-San Remo and Paris-Roubaix in the same year.
While the 253km course featured over 50km of cobbles, the dry and dusty sectors of pavé did not force the selections they have in the past, with a nine-rider breakaway, established after 30km, lead the race right down until the final 20km.
Sean De Bie (Lotto Soudal), Gregory Rast (Trek Factory Racing), Adam Blythe (Orica-GreenEdge), Alexis Gougeard (Ag2r-La Mondiale), Aleksejs Saramotins (IAM Cycling), Pierre-Luc Perichon (Bretange-Seche), Tim Declercq (Topsport-Vlaanderen), Frederik Backaert (Wanty Groupe Gobert) and Ralf Matzka (Bora Argon 18) established an eight minute lead that the peloton bore away at over the race.
The race survived the first cobbled section at 98km, but the following one claimed the first causality of the day, with Trek’s Stijn Devolder hitting the deck and bringing an end to his race.
The much-anticipated Arenberg forest did little to settle the matter, with even former winner Fabian Cancellara commenting on its lack of impact.
It did not bode well however for New Zealand's Shane Archbold (Bora Argon 18) who crashed on entry to the forest, his third crash this week after hitting the deck twice during Wednesday's Scheldeprijs.
Sky's strongman Geraint Thomas crashing as he tried to jump a curb, and while he managed to chase back on he had little impact for the remainder of the race.
With 85km to go a lowering boom-gate for a train split the peloton, with some riders risking their lives to get across before the arms lowered, while others were forced to wait for the train to pass.
Etixx-Quick-Step applied the pressure in the crosswinds to break the peloton into echelons but most of the groups would come back together.
Bradley Wiggins, in his final race as a professional with Team Sky, attacked with 31km to go. The Brit caught Etixx-Quick-Step's Stijn Vandenbergh who was dangling off the front and prompted a small selection, but the move was quickly nullified by Katusha.
The remainders of the breakaway was caught with 20km to go, as Jurgen Roelandts tested the elastic of the peloton.
With 12km to go, van Avermaet and Lampaert attacked and established a 13 second lead. Degenkolb launched his move, catching the pair with only six kilometres to the velodrome.
The Giant-Alpecin rider was forced to drive the leading group as Lampaert refused to work, allowing his team-mate Stybar to bridge with 4.2km to go.
The chase group of Lars Boom (Astana), Martin Elmiger (IAM Cycling) and Jens Keukeleire (Orica-GreenEDGE) ramped up the chase, catching them for the final kilometre and before entry to the Roubaix velodrome.
Paris-Roubaix: 253km, Compiegne - Roubaix
1 John Degenkolb (GER) Giant-Alpecin 5hr 49min 51sec
2 Zdenek Stybar (CZE) Etixx-Quick-Step
3 Greg van Avermaet (BEL) BMC
4 Lars Boom (NED) Astana
5 Martin Elmiger (SUI) IAM Cycling
6 Jens Keukeleire (BEL) Orica-GreenEDGE
7 Yves Lampaert (NEL) Etixx-Quick-Step 0:00:07
8 Luke Rowe (GBR) Sky 0:00:28
9 Jens Debusschere (BEL) Lotto-Soudal 0:00:29
10 Alexander Kristoff (NOR) Katusha 0:00:31