A day after looking vulnerable in the rain, the Team Sky rider and 2013 Tour champion made his decisive move 1.5 kilometres from the finish.
He dropped Tejay van Garderen (BMC), who snatched the overall leader's yellow jersey, after crossing the line 17 seconds later.
Froome had lost ground on the previous stage in the driving rain, but he came back strongly on stage seven, while defending Tour de France champion Vincenzo Nibali (Astana) cracked in the finale to lose the overall lead.
For the top riders, however, the idea is not to peak too soon as a three-week battle awaits on the Tour from July 4-26.
"He's got a lot more to come, I think," Team Sky principal Dave Brailsford told reporters.
"One of the lessons of the past is we got in absolutely pinging and come the last week you're kind of hanging on."
The goal for Froome is that his form improves as the Tour progresses and does not nosedive during the final week in the Alps.
"I'm not quite at my best yet. I think I've still a bit of work to do between now and the Tour," Froome said.
"That's one of the reasons we're here, to really test and see where we're at. I'm happy with where I'm at. It's a good place to be at his time of the season."
Van Garderen leads Froome by 18 seconds heading into the final stage, a 156.5-km mountain trek from Saint-Gervais Mont Blanc to Modane-Valfrejus.
Although his level appears short of what it will need to be on the Tour, Froome still impressed.
"When he attacked he went by so fast there was no way I could get on his wheel," van Garderen said.
"The tactic tomorrow is going to be to stay glued to Chris's wheel and try not to give him any room. It is going to be a tough fight.
"I am sure the breakaway is going to go crazy because it is the last stage of the race and it is technical again. But the team is ready, I am ready, and we are going to fight to the finish line."
Nibali, who took the yellow jersey on after breaking away with four other world class riders on stage six, slumped to 11th overall 3min 5sec off the pace, but he was not unduly concerned for the Tour.
"I'm more or less in the same condition as last year at that time," the Astana rider said.
Stage 7: 155 Km, Montmélian - Saint-Gervais Mont Blanc
1 Christopher Froome (GBR) Sky 4hr 24min 17sec
2 Tejay Van Garderen (USA) BMC 0:00:17
3 Louis Meintjes (RSA) MTN-Qhubeka 0:00:41
4 Benat Intxausti (ESP) Movistar
5 Joaquim Rodriguez (ESP) Katusha 0:00:54
6 Romain Bardet (FRA) AG2R 0:01:08
7 Alexis Vuillermoz (FRA) AG2R 0:01:15
8 Andrew Talansky (USA) Cannondale-Garmin 0:01:25
9 Rui Costa (POR) Lampre-Merida 0:01:34
10 Daniel Navarro (ESP) Cofidis 0:01:45
1 Tejay Van Garderen (USA) BMC 26hr 59min 27sec
2 Christopher Froome (GBR) Sky 0:00:18
3 Benat Intxausti (ESP) Movistar 0:00:45
4 Rui Costa (POR) Lampre-Merida 0:01:10
5 Simon Yates (GBR) Orica-GreenEDGE 0:01:29
6 Alejandro Valverde (ESP) Movistar 0:01:40
7 Romain Bardet (FRA) AG2R 0:01:45
8 Daniel Martin (IRA) Cannondale-Garmin 0:02:29
9 Andrew Talansky (USA) Cannondale-Garmin 0:02:39
10 Joaquim Rodriguez (ESP) Katusha 0:02:46