Juan Fernando Quintero's late penalty saw Colombia come from 2-0 down to beat France 3-2 in Paris.
The hosts were cruising after 26 minutes thanks to goals from Olivier Giroud and Thomas Lemar, but Colombia were much the better team in the second half.
Luis Muriel had pulled one back before the break and Radamel Falcao levelled after the hour. Then with only five minutes left, Quintero scored from the spot after a foul by Samuel Umtiti.
It was a hugely disappointing end to the night for France, who began the match showing so much promise.
They had been on the front foot from the start with the pace of Kylian Mbappe in particular causing problems for the visitors as he teed up an early chance for Giroud.
The 11th-minute opener was a gift from Giroud's old Arsenal teammate David Ospina as he fumbled a straightforward low cross from Lucas Digne, leaving Giroud with an easy finish for his 30th France goal.
The Chelsea forward almost had another moments later from Antoine Griezmann's corner, but there was enough strength in Ospina's fist to keep the ball out.
Colombia's first attack of note came in the 20th minute but Djibril Sidibe got in a block to deny James Rodriguez.
France doubled their lead with a swift counter-attack in the 26th minute as Mbappe played in Lemar who fired home a powerful shot from the left-hand side as Colombia appealed for a foul in the build-up.
Just when France thought they had some breathing space Colombia snatched a goal though, with Muriel heading home from a corner two minutes later.
Griezmann had the chance to mark his 50th cap with a goal six minutes before the break, but Ospina made the save one-on-one.
Just as France had done in the first half, Colombia started the second by immediately carving out a chance for Muriel who fired wide from the angle.
That brought Didier Deschamps to his feet on the sidelines as he barked at the France players, but Colombia continued to pose a threat.
Muriel had another chance to level just before the hour after dispossessing Raphael Varane, but his curling shot from the right was kept out by Hugo Lloris.
They got the goal they had been threatening in the 62nd minute when Rodriguez set up Falcao to fire past Lloris.
Deschamps responded by sending on Paul Pogba to see if the out-of-sorts Manchester United man could spark a response, and moments later Varane had a fine chance from a corner but sent his header wide.
Pogba tried his luck from range in the 72nd minute before a string of substitutions broke the rhythm of the game.
Wissam Ben Yedder and Lucas Hernandez came on to make their debuts, the latter as a replacement for the injured Digne.
With France disjointed, Colombia pushed forward and would seize their chance when Umtiti fouled Jose Izquierdo, with Quintero making no mistake.