The Brit was forced to dig deep on the first-category final climb to Leysin as attacks fired ahead. Froome settled into his own tempo after support in the closing kilometres from David Lopez and Vasil Kiryienka.
Up ahead stage four came down to a battle between Simon Yates (Orica-Scott) and Richie Porte (BMC Racing), with Yates edging out victory on the line.
Yates launched his move early on the penultimate Col du Pillon climb. Froome came to the fore over the summit, but as Yates pushed clear he enjoyed a healthy 46-second advantage at the foot of the final climb.
Porte jumped out of the pack as Froome began to struggle, and in the end the Team Sky leader crossed the line 1:15 back.
Team Sky had helped to set a tempo on the front over an undulating penultimate 163.5km stage, controlling the eight-man break up the road.
Heading into Sunday’s deciding time trial Froome sits 32nd on GC, 1:36 back on Yates.