The Welshman had come to the Tour as a super-domestique for Chris Froome (Team Sky) but it was his time to shine in the bleak weather that plagued the first stage of the race.
The rain made for wet and slippery roads, with the bends having to be negotiated with care to avoid losing traction and falling. Most managed to stay upright, though others weren't as lucky.
The biggest casualty of the day was Alejandro Valverde, who went down hard on a corner, sliding hard into the barriers and staying prostrate on the road. The 37-year-old would have been hoping to continue his superb early season form, but ended his Tour de France being taken to hospital with a suspected fracture in his leg.
Disaster for Valverde #sbstdf pic.twitter.com/F114w0aljX — CyclingCentral (@CyclingCentral) July 1, 2017
Simon Clarke (Cannondale-Drapac) was lucky to not also hit the deck as he narrowly avoided a crashed motorbike out on course.
Sprinter Dylan Groenewegen (Lotto NL-Jumbo) crashed and slid, but was back up immediately.
George Bennet (Lotto NL- Jumbo) would have been hoping for similar sensations to his successful run on the Tour of California final stage, where he catapulted himself into the race lead. Unfortunately the Kiwi was another victim of the wet conditions, hitting the tarmac at speed before getting straight back on the bike.
Another casualty was Tony Gallopin (Lotto Soudal) who crashed hard, and may have been fortunate that he was able to continue, given the similarities with Valverde's fall.
Ouch! Seems like an aggressive way to grab an umbrella #sbstdf pic.twitter.com/eAU7zMcNPY — CyclingCentral (@CyclingCentral) July 1, 2017
[tdf widget="stagewinners" stage="1"]
As it happened
Andriy Grivko (Astana) set the early pace in Dusseldorf, but his time was soon overhauled as the bigger names came out to play in the miserable conditions.
Thomas set a scintillating time out on course, with a time of 16 minutes and four seconds besting the mark of former world champion Vasil Kiryienka (Team Sky) by over seven seconds to move into the top spot.
His time withstood the challenge of the remaining riders, with local favourite Tony Martin (Katusha failing in his attempt to take a win in the Tour's return to Germany, slipping to fourth on the day, eight seconds adrift of Thomas.
Stefan Kung (BMC Racing) went closest to the Welshman's time in his Tour de France debut, finishing just five seconds off the win and showing that he's both a star of the future and the present.
Froome and Sky establish early lead in battle for yellow
Team Sky had more than just the stage victory and yellow jersey to celebrate after the first stage as Chris Froome also put himself in a very strong position against his general classification rivals.
Froome finished well up on most of the threats to his Tour de France title defense, taking 35 seconds lead on Richie Porte (BMC Racing), with most other favourites even further behind.
Simon Yates (Orica-Scott) kept his general classification hopes in good order with a strong showing, but Nairo Quintana (Movistar), Daniel Martin (QuickStep Floors), Romain Bardet (AG2R La Mondiale), Fabio Aru (Astana), Alberto Contador (Trek-Segafredo) will all know that they start on the back foot in their bid to topple Froome.
[tdf widget="tourleaders" stage="1"]