France dominated for much of the game, against a Portugal side shorn of talismanic captain Cristiano Ronaldo after he sustained a knee injury in the first half.
Tournament top scorer Antoine Griezmann headed over before substitute Andre-Pierre Gignac hit the post in stoppage time.
And Eder stepped up in the second period of extra time, holding off Laurent Koscielny before finding the bottom corner from 25 yards.