The Ineos Grenadiers rider seized his chance as the reduced peloton slowed and bunched to take a tight right-hand turn around a kilometre from the Saint-Vallier finish line.
Thomas, who faded in the second half of Wednesday's time trial, opened up a lead of a few seconds and was almost caught again as the chasing pack closed in, with stage three winner Colbrelli leading the charge.
The Italian nearly passed Thomas but the 35-year-old held on narrowly for the victory.
Read More
How to watch cycling LIVE on SBS
Lukas Postlberger crossed the line safely in the bunch to retain his race lead.
"As we've seen all week, sprinting teams have been quite low on the ground when it comes to the finale and there were limited guys to chase really so I just thought sod it and I just sensed it and went for it," said Thomas
"To be honest, I didn't think I had that on the line. I just sat up two metres from the line to start to give it the big one, but man, Colbrelli came past so fast he nearly took my helmet off. But it's really nice to get that win for sure."
Thomas' stage five win gave him a 10-second time bonus to move up two places to sixth in the general classification, 14 seconds off the race lead.
It was a lively day at the Dauphine as crash 30 kilometres from the finish had caused the abandonment of three riders, including Frenchman Clément Venturini.
Lotto Soudal rider Harry Sweeny was the best of the Aussies on Stage five with a ninth place finish. The result moves him to the top of the young riders' standings.
Thomas' Australian teammate Richie Porte finished 21st on the stage, followed by Jack Haig in 28th and Ben O'Connor in 35th.
Porte moves to eighth in the general classification, only 16 seconds behind race leader Lukas Postlberger.
O'Connor and Haig also remain in contention coming in tenth and eleventh in the overall standings, 35 seconds in arrears.
Friday's sixth stage will be a day for the climbers with a 167.2km route between Loriol-sur-Drôme and Le Sappey-en-Chartreuse, with four ascents in the last 50km and a final climb (3.3 km at 6.2%) in Chartreuse, near Grenoble.