Rigoberto Uran moved into second overall at 54 seconds, set to be the tightest winning margin of Froome's four Tour successes, while Romain Bardet held on for third by just one second ahead of Mikel Landa.
In what has been the closest Tour battle in years, the top three riders started the day separated by less than 30 seconds, building hope for a grandstand finale in the steamy southern port city ahead of Sunday's procession into Paris.
But any such romantic notions of Frenchman Bardet overturning his 23sec deficit to Froome had disappeared long before the end of Saturday's 22.5km race against the clock, which began and ended in Marseille's iconic Velodrome football stadium.
Bardet started the day second overall but only narrowly escaped the double humiliation of being pushed off the podium by Landa and overtaken by a charging Froome, who started his time-trial two minutes after the Frenchman.
Froome reached the first time check after 10.2km in second place, two seconds behind team-mate Michal Kwiatkowski, with Bodnar third at 6sec.
By then it was already clear there would be no grandstand finish as Uran was 23sec down on Froome having begun with a 29sec deficit, while Bardet had given up 44sec to the British leader.
By the second time check, Colombian Uran was starting to gain back a bit of time and looked certain to take second overall.
But Bardet was in crisis, already 1min 17sec off Kwiatkowski, who still had the best time at the second check, although only fractions of a second ahead of Spanish veteran Alberto Contador, after 15.6km and the climb up to the Notre Dame de la Garde basilica, with Froome fourth at 3sec.
Spaniard Landa, who had started the day 1:13 behind Bardet, was now starting to threaten the Frenchman's podium hopes.
At the finish, Uran almost came a cropper, hitting the side boardings on a tight bend in a technical run in to the Velodrome.
It cost him a few seconds but disaster was averted as he stayed upright to finish 31 seconds behind four-time Polish time-trial champion Bodnar, whose strong final section took him a second ahead of Kwiatkowski, the 2014 world road race champion.
Landa had finished 51sec back and as Bardet came into the stadium, fans were counting down the seconds to see if he would hang on to third place, while the looming yellow-clad figure of Froome lurked in his rear-view mirrors.
Bardet finished 2:02 behind Bodnar to hold onto third by a single second while Froome crossed the line moments later, to claim third place on the stage and secure a fourth Tour title.