Froome was over three minutes behind the winner on the mountainous 160km stage from Bourg-en-Bresse to Culoz, but finished alongside his main rivals.
Colombian Pantano (IAM Cycling) outsprinted Poland's Rafal Majka to claim his maiden Grand Tour stage win.
Dutchman Bauke Mollema and Briton Adam Yates finished in the peloton to stay second and third overall.
Movistar's Nairo Quintana, fourth in the general classification and two minutes 29 seconds behind Froome, is the man most likely to make a move for the yellow jersey, but he showed few signs of attacking in the Jura Mountains.
With six categorised climbs, including two up the physically testing Grand Colombier, there would have been chances for rivals to try and surprise 2013 and 2015 champion Froome.
But the peloton remained mainly passive, and what few efforts there were to catch out the 31-year-old - one from the Astana team and a solo effort by Romain Bardet - were quickly shut down by the tireless work of Team Sky colleague Wout Poels.
Even after Froome lost the support of team-mate Geraint Thomas on the first climb up Grand Colombier, with the Welshman suffering a puncture, he was barely threatened.
It will now take something special to unseat Briton Froome, who leads his closest rival Mollema by one minute 47 seconds.
"I was surprised that we weren't more attacked out there," said Froome.
"I really thought today's stage was a perfect opportunity for the other teams to put us under pressure, especially with Geraint getting a puncture on the second last climb out there - we were one man down."
There have been rumours that 26-year-old Quintana, twice runner-up in the Tour to Froome, has been suffering from illness, but he will need to carve out opportunities when the race moves into the Alps from stage 17.
Pantano, 27, was the last man standing from an early break that was whittled down from an initial cast of 30 riders.
Tinkoff's Majka, who took ownership of the king of the mountains jersey, was persistently at the front and was leading on his own during the second descent of Grand Colombier - a mountain making only its second Tour appearance - but was caught by Pantano on the way down.
"This is the last chance for the sprinters before we get to Paris because four days in the Alps follow"
Read Geraint's preview of stage 16
The pair held off a late surge from Alexis Vuillermoz and Sebastien Reichenbach, before Pantano sprinted to a first stage win for a Colombian since Quintana's victory on the penultimate day in 2013.
It was also a first stage win in the Tour de France for the IAM Cycling team, giving them a standout moment before they fold at the end of the season because of a lack of a secondary sponsor.
"This is incredible. It's a dream come true," Pantano said. "I came to the Tour de France for that, but I didn't believe it could happen. I'm very happy."
Stage 15 result
1.  Jarlinson Pantano (Col/IAM Cycling) 4hrs 24mins 49secs
2.  Rafal Majka (Pol/Tinkoff) same time
3.  Alexis Vuillermoz (Fra/AG2R) +6secs
4.  Sebastien Reichenbach (Swi/FDJ) same time
5.  Julian Alaphilippe (Fra/ Etixx - Quick-Step) +22secs
6.  Serge Pauwels (Bel/Dimension Data) +25secs
7.  Pierre Rolland (Fra/Cannondale) same time
8.  Ilnur Zakarin (Rus/Katusha) +1mins 30secs
9.  Daniel Navarro (Spa/Cofidis) same time
10. Tom-Jelte Slagter (Ned/Cannondale) +2mins 8secs
General classification after stage 15
1.  Chris Froome (GB/Team Sky) 68hrs 14mins 36secs
2.  Bauke Mollema (Ned/Trek) +1mins 47secs
3.  Adam Yates (GB/Orica) +2mins 45secs
4.  Nairo Quintana (Col/Movistar) +2mins 59secs
5.  Alejandro Valverde (Spa/Movistar) +3mins 17secs
6.  Romain Bardet (Fra/AG2R) +4mins 4secs
7.  Richie Porte (Aus/BMC Racing) +4mins 27secs
8.  Tejay van Garderen (US/BMC Racing) +4mins 47secs
9.  Daniel Martin (Ire/Etixx - Quick-Step) +5mins 3secs
10. Fabio Aru (Ita/Astana) +5mins 16secs
Jarlinson Pantano won stage 15 of the Tour de France as defending champion Chris Froome kept the yellow jersey.