Vettel's two-stop strategy and controlled tire wear was the difference.
Grosjean, who started on the second row, grabbed the lead at the first turn and held it until the 29th lap when he went into the pits for the second time to change tires. Vettel took the lead and waited for his final pit stop on lap 37.
With fresh hard tires, Vettel blasted past Grosjean on lap 41 to take the lead for good.
Vettel got off to a rough start when he clipped Lewis Hamilton's right rear tire before Turn 1, forcing the Mercedes driver to retire after the ninth lap due to a puncture and associated damage.
"I had a very poor start," Vettel said. "I clipped the front wing but after that we were patient and I managed to get past Romain and beat Mark on the tire strategy. The decision (on the tires) was made on the first stint because we stayed out longer on the first tires. It was not easy to make the two-stop work especially in the middle sector but it worked in the end."
Grosjean was bidding to become the first French driver to win a Grand Prix since Olivier Panis at Monaco in 1996.
"What a start," Grosjean said. "Today was a very good race but the Red Bull caught us but we were the only ones who were able to challenge them."
Despite preserving the championship race, Alonso conceded the title is virtually decided.
"Even if Sebastian retires in all four races I need to win them all but we are struggling a bit at the moment," Alonso said. "We will continue to give our all in every race though and then if he wins it, I'll shake his hand."
Caterham driver Giedo van der Garde and Marussia's Jules Bianci were involved in contact at the back of the field after the start and were both out of the race quickly.
Prior to Sunday's race, the drivers honored Maria de Villota with a moment of silence. The former F1 test driver was found dead in a hotel room in Seville, Spain, on Friday. Her family said an autopsy showed that lingering injuries from her racing accident a year ago likely caused her death.
-A{