A goal by Pedro on 58 minutes was enough to give Vicente Del Bosque's side the three points, and they will guarantee their place in Brazil next year if they can gain seven points from their final three qualifiers.
France gave a good showing of themselves but Spain created the better of the chances, and their task was made far easier when Paul Pogba was sent off on 78 minutes after picking up two yellow cards.
The European and world champions came into the match off the back of a shock draw at home to Finland but they were boosted by the return of midfielders Xabi Alonso and Xavi Hernandez.
The hosts began the game with intent and had their first attempt on goal in under 20 seconds, when Mathieu Valbuena attempted a bicycle kick which went well over the bar.
Didier Deschamps' side looked intent on disrupting Spain's passing game from the off and it took the visitors a few minutes to settle, but they should have taken the lead after five minutes.
A pin-point pass from Andres Iniesta found Nacho Monreal, who cut the ball back from the by-line but Xavi put his shot just over the bar from six yards out.
Although the Arsenal full-back was an asset going forward he found himself out of position moments later, leaving France right-back Christophe Jallet free to run on to a long ball by Valbuena and centre for Karim Benzema, although the Real Madrid forward blazed over the bar.
Xavi again came close to scoring on 18 minutes, shooting narrowly wide of goal after a lovely ball by Xabi Alonso had put him through.
Spain were adamant they should have been awarded a penalty with half an hour gone when Pedro was brought down by the legs of France goalkeeper Hugo Lloris, and Xavi was booked for protesting referee Viktor Kassai's decision to award nothing.
France then created the clearest chance of the game so far. Franck Ribery headed a long ball from the excellent Valbuena into his path to beat Gerard Pique, but Spain goalkeeper Victor Valdes judged the situation well, made himself big and blocked the Bayern Munich forward's effort with his left leg.
Spain were a much improved side after the break. Iniesta almost gave them the lead following a sublime one-touch move involving Xabi Alonso and Xavi, but Lloris got a finger tip to the midfielder's shot to force a corner.
Pedro avoided a yellow card after a late tackle on Ribery, and with Jesus Navas emerging from the dugout ready to come on, it looked as if the Barcelona forward was about to be taken off.
However, any plans to remove him were quickly shelved when he broke the deadlock a minute latter. The forward crossed the ball to Monreal on the left-hand side of the France penalty area and then raced to the far post to meet the full-back's diagonal ball, which Lloris failed to keep out.
Navas did eventually come on, but David Villa was sacrificed instead. The substitute's impact was immediate, breaking down the right and putting in a low cross for Pedro, who could not keep his effort under the bar.
Blaise Matuidi was then presented with France's first real chance of the second period in a rare break, but his low shot was far too close to Valdes, who saved comfortably.
Karim Benzema, who has now gone 12 matches without scoring for his country and was booed off by the Stade de France crowd for the third consecutive match, headed just wide of the near post from a free-kick before Pogba was sent off for two bookings in as many minutes.
Despite being a man down, France still created danger. Ribery shaved the near post with a low drive from just inside the area and Real Madrid centre-back Raphael Varane snatched at a loose ball following a corner and could only shoot wide from yards out, but was under pressure from Monreal.
Sergio Busquets, wearing a bandage on his head following a collision with Benzema, missed a glorious to wrap the game up in injury time but his side held on to claim a vital victory which puts their destination back in their own hands.