After losing the opening game, Sharapova, who won this grand slam in 2012 and lost to Serena Williams in the final last year, bounced back to claim the first set, but she faced a tougher challenge in the second.
Sharapova lost the tie-breaker as Halep levelled matters at 1-1, but the Russian outnumbered her opponent by three breaks to two in the final set to seal her second French Open crown.
The victory also sees Sharapova climb to fifth in the women's rankings, while Halep's involvement in the final sends her third.
Sharapova had to come from a set down in each of the three rounds leading up to the final, and looked set to make another slow start when Halep won the opening game on the 27-year-old's serve.
However, the number seven seed responded superbly, reeling off five games without reply to take control of the first set.
Halep - the first player in 16 years to reach her first grand slam final without dropping a set - refused to go down without a fight and broke back to send the scores to 5-4, only to drop serve in the next game.
Sharapova came from a set behind to win last month's Madrid Open final against Halep, but it was the Romanian who was left playing catch-up on Saturday.
After an exchange of breaks early on in the second set, Halep looked to have made the breakthrough when she won on her opponent's serve to move 5-4 up.
She was unable to hang on to her advantage, but eventually drew level by prevailing in a tense tie-break.
The opening two games of the third set went against serve and, after surviving two break points at 2-1 down, Sharapova nudged in front on Halep's serve in the very next game.
Halep managed to pull level at 4-4, but Sharapova was not to be denied and completed victory by winning two games in succession to love.