Third at the Grand Boucle last year, Pinot soloed to victory at the end of the 237-kilometre stage from Unterterzen to Sölden in Austria.
Italian Domenico Pozzovivo finished second at 34 seconds with Simon Spilak of Slovenia third at 37 seconds.
Britain's Geraint Thomas moved into second overall at 42 seconds after finishing fifth on the stage.
Spilak is third overall with Pozzovivo fourth.
Previous yellow jersey wearer Tom Dumoulin fought gamely to hold onto his lead but drops to seventh overall after coming home 10th at more than a minute and a half down.
Pinot has proved to be in fine form recently having also won a stage at last month's Tour de Romandie where he finished fourth overall.
“Switzerland has been good to me, this stage was my aim,” Pinot told Swiss channel RTS.
“But there are still four stages, including a time trial on Sunday where I'll have to watch out for the 'rouleurs' (more powerful riders).”
On the final 14-kilometre climb to the finish, Spilak was the first to attack with eight kilometres left but Pinot chased him down and then with two kilometres to ride he left his rivals in his wake.
He then reeled in the last of the day's breakaway riders, Stefan Denifl, who faded to ninth.
Thursday's stage six from Wil to Biel/Bienne covers 237 kilometres.