Williams won that in straight sets for her 21st Grand Slam title, but Muguruza, at 22, 12 years younger than the American, has improved further since then.
The top seed and defending champion kept alive her hopes of a record-equalling 22nd Grand Slam title against unseeded Dutchwoman Kiki Bertens.
But her form was at best patchy as she laboured to a 7-6 (9/7), 6-4 semi-final win.
The fourth seeded Muguruza, meanwhile, underlined her fine form with a 6-2, 6-4 win over Australia’s Samantha Stosur to reach a Grand Slam final for just the second time.
Muguruza is the first Spanish woman in 16 years to reach the French Open final.
“The first set was not simple, but she was playing so well,” Williams said of Bertens. “I need to keep my calm for the final and hope the fans will be with me.”
Williams already looked out-of-sorts in her quarter-final on Thursday against 60th ranked Yulia Putintseva, having to claw her way back from a set and a break down to get through.
And it was another ponderous start from the three-time former winner against her 58th-ranked, opponent.
Bertens, who had never made it past the fourth round of a Grand Slam tournament prior to Paris, went 2-0 up before Williams opened her account.
The cold, damp conditions were similar to Thursday and the atmosphere was muted on a less-than-half full Philippe Chatrier centre court.
The Dutchwoman failed to convert a set point at 5-3 with Williams serving and then a pair of drop shots in the next game brought up a break-back point for the American which she converted with a big forehand drive.
Bertens appeared to be having trouble with an injury to her left calf muscle as Williams took the lead for the first time in the match, but she held firm to force a tie-break.
In that, Williams eased ahead 5-2 after losing the first point on her serve, but two botched volleys at the net saw her hand a set point back to Bertens before she found some form to take it 9/7.
The pair exchanged service breaks to get the second set underway and Bertens then failed to take two break points to get to 4-2.
She paid the price for that minutes later as Williams grabbed the break she needed to put the match away, needing four match points in the end.
The final will be the fourth match in four days for Williams due to the bad weather that has dogged Roland Garros this week.
She was in command against 32-year-old Stosur, a former US Open champion, from the start but had difficulty putting away the match from 5-2 up in the second.
– Stay calm –
“Emotions can sometimes be bad when you make a final,” said Muguruza who defeated Williams in straight sets in the 2014 French Open second round.
“Sometimes you just have to stay calm, prepare youself as best you can and play with no regrets.”
With the Suzanne Lenglen court barely half-full, Muguruza shrugged off the ghostly atmosphere as well as the bone-jarring 13 degrees to race into a 4-0 lead.
The Australian won just six points in that early blitz before she got on the board with a service hold in the fifth game.
But the 6ft (1.82m) Venezuelan-born Muguruza continued to dominate, sweeping the first set in 32 minutes.
There were was no let-up in the second set as the 22-year-old Spaniard broke for 1-0 and held a love service game to go to 2-0.
Stosur rallied for a break back, but Muguruza retrieved it immediately for 3-2 on the back of unrelenting, deep and flat hitting.
Muguruza, a quarter-finalist in the last two years, carved out a fifth break of the match for 5-2 after a sixth double-fault by Stosur on her way to sealing victory.