Dennis (BMC) went into the final stage as the clear favourite, finishing the 28.6km course 29 seconds ahead of team-mates Stefan Keung and Damiano Caruso to complete a BMC clean sweep of the top three.
The win was Dennis’s third in time trials this season. He also won the 6km prologue and is a favourite to claim the Tour de France Yellow Jersey on 1 July in Dusseldorf.
“It was 28.6km of pain,” Dennis said. “The first 4km felt okay and then it was all about switching off and telling myself that the top of the climb was the finish. From there, it was just 5km to go.
“I tried to save something in the little valley and stay as aerodynamic as possible before going as fast as I could on the climb. I’m not a climber but I am also not too heavy so, I could try and hold the climbers on the ascent.”
Špilak, who also won the title in 2015, took a 52-second advantage over Caruso into the final day, and he finished four seconds behind the Italian in fifth on the day to secure the yellow jersey. Steven Kruijswijk of LottoNL-Jumbo was third.
“This was a very hard day and difficult TT,” Špilak said. “It was harder than we expected. We did our recon of the route in the morning. By this afternoon it was so hot, but I am so happy.
"It is my second win here. I am happy for my teammates, too. All week all of them did such a great job. Temperature is my biggest enemy here in Suisse, but I beat the heat this time.”
“Looking ahead is [Tour of Poland] Poland, that is my next goal. No grand tours for me since 2014, this is my own decision. I prefer stage races of six-10 days. Of course, it would be nice to win a Tour de France stage or to become world champion.”
It has been a roller coaster two months for Dennis after crashing out early at the Giro d’Italia and then on the second stage of Tour de Suisse after taking the prologue win.
“It hasn’t been an easy run for me,” he said. “I haven’t felt too good and I think I have been lacking a little bit of form. My body was in a bit of shock after the first road stage and the crash.
“After crashing out of the Giro d’Italia and then crashing here, I think I was a little bit down about it.
“It was obviously good that nothing was broken and there were a couple of days where I thought I should’ve gone home. But, there was something good at the end of it.”
World Champion Peter Sagan (BORA-hansgrohe) picked up his sixth Tour de Suisse points classification jersey and Lasse Norman Hansen of Aqua Blue Sport took the king of the mountains competition.