The eighth-seeded Dane, winner at Indian Wells in 2011 after being a losing finalist the previous year, held off a late fightback by Kerber to scrape through in a wildly fluctuating contest lasting two-and-a-half hours.
In a match littered with 14 service breaks, Wozniacki led 4-1 and then 5-3 in the third set but the German clawed her way back to 5-6 before being broken for a seventh and final time when she netted a forehand.
Wozniacki will next face 2006 champion Maria Sharapova, who overcome fellow Russian Maria Kirilenko 6-4 6-3 in the second semi-final at the Indian Wells Tennis Garden.
Sharapova, like Wozniacki a former world number one, will also be appearing in her third final here, having been demolished by Belarusian Victoria Azarenka in the title match last year.
"I led 4-1 in the third and should have finished it off there but she's a great fighter," a jubilant Wozniacki said courtside after ending a run of three consecutive losses to the German. "I played a bit short and she was all over it.
"It is very special," the 22-year-old Dane said of reaching her third final at Indian Wells. "I really enjoy this tournament. I think it shows. I have done great results here in the past, and this is another very good one."
Kerber who won her first WTA singles title in Paris last year, raced into a 4-1 lead before taking the opening set in 38 minutes after Wozniacki hit a backhand service return long.
The 25-year-old German appeared to be in cruise control when she broke her opponent's serve for a fourth time at the start of the second set, then holding to 2-0 up but the match effectively turned in the seventh game.
At 3-3, Wozniacki survived nine deuces and five break points before holding serve and going on to level the match when she broke Kerber in the 11th game after the German netted a forehand.
"We had some really good points in that game, and that was definitely very important in the match," Wozniacki said of that marathon game in the second set. "I managed to turn it around."
Kerber, who had not dropped a set in her three previous matches before gaining a walkover into the semi-finals when seventh-seeded Australian Samantha Stosur withdrew due to a calf injury, applauded Wozniacki's play.
"She was moving better and hit the ball a little bit higher," the German left-hander said. "It's not easy to lose a match like this, but well done to her. It was a tough match from the beginning.
"I started very well, but she found her game in the second set. And it was not easy for me, but I think it was a close and good match. At the end she won important points."
Four-times grand slam singles champion Sharapova broke her good friend Kirilenko in the third game of the match and went on to take a hard-fought first set in an hour.
The slender Russian then tightened her grip in the second set with much sharper serving, breaking her opponent twice more to seal victory on her first match point with a crunching forehand winner down the line.
"I've known Maria since we were little girls so there are no secrets out there on court," second seed Sharapova said courtside. "It's always tough to play against someone when you have played so many tournaments together.
"I started to serve better in the second set and that gave me a few free points. She gets so many balls back and likes to play those long points. My job was to be more aggressive than usual."