Romelu Lukaku's 75th minute winner earned Belgium victory in Piraeus and passage to next summer's tournament, leaving Greece battling Bosnia for a play-off spot.
Bosnia and Herzegovina thrashed Gibraltar 4-0 in the other Group H game, moving into second place ahead of Greece.
The French failed to break through in a 0-0 with minnows Luxembourg in Toulouse to move top of Group A but only by one point.
Portugal beat 10-man Hungary 1-0 to keep the pressure on Group B leaders Switzerland, who thrashed Latvia 3-0.