Hosts Spain also advanced to the last four with a 28-24 defeat of Germany, where they were joined by Denmark, 28-26 winners over Hungary, and surprise package Slovenia, who edged Russia 28-27.
Friday's semi-finals in Barcelona will see Spain take on Slovenia while Croatia lock horns with Denmark.
The Croatians, who won their only world title in 2003, led from start to finish against an aging French team, the contest decided by superb goalkeeping from Mirko Alilovic and playmaker Domagoj Duvnjak's game-leading nine goals.
"All the credit must go to the players who showed a lot of heart... we dedicate this victory to everyone in Croatia who supported us," coach Slavko Goluza told the country's national television.
"We have suffered so much against the French down the years, they are a fantastic team and some of their stalwarts, who will undoubtedly quit after this tournament, have fully earned their international retirement.
"This is a fantastic achievement and we are now looking forward to the semi-final clash with Denmark, which will be another mountain to climb and we will need to dig deep into whatever resources we have left to reach the final."
In sharp contrast to their French peers, Spain's veterans turned back the years and produced a majestic performance to beat plucky Germany after raising their intensity in the final quarter against younger, more inexperienced opposition.
"It has been tough, harder than we expected but we could not let this moment pass us by with our home crowd at this venue," goalkeeper Jose Manuel Sierra, 34, told Spanish television.
"Although we were two goals down at halftime, we were convinced that we could turn the game around," left-back Alberto Entrerios, 36, added.
"I think we have achieved our objective by reaching the semis in a competition at home and now we have to enjoy what is still to come."
Slovenia, whose best previous finish was 10th in 2007, looked doomed after twice winners Russia took a 10-5 lead midway through the first half, but Luka Zvizej and Uros Zorman scored five goals each to swing an error-strewn contest their way.
Reigning European champions Denmark appeared to be in complete control after opening an 18-11 lead over Hungary at the interval but survived a late scare as their feisty opponents cut the deficit to just one goal in the closing stages.
- Sports & Recreation