The American, 37, won 7-5 6-4 in Singapore to secure second place in the White Group behind Karolina Pliskova.
Czech Pliskova had already qualified, but ended the round-robin stage with a 6-3 6-1 loss to Jelena Ostapenko.
Williams will play Caroline Wozniacki or Caroline Garcia in the semis.
Denmark’s Wozniacki has guaranteed a semi-final place with two wins, and will win the White Group with victory over French eighth seed Garcia on Friday.
World number one Simona Halep of Romania then takes on Ukraine’s fourth seed Elina Svitolina, with both women still able to reach the semi-finals heading into the final group matches.
Williams makes amends for Wimbledon defeat
Muguruza proved too strong in the Wimbledon final in July. but three months later it was Williams who prevailed in straight sets.
Both players struggled to hold serve in a see-saw opening set which was eventually won by Williams.
Leading 6-5, the American took advantage of a loose game from Muguruza in which the Spaniard drove a forehand long with the court wide open.
Before the second set, Muguruza’s coach Sam Sumyk urged her to commit more to her shots, instructing the Wimbledon champion to “miss on your terms”.
The words seemed to have an effect on Muguruza, who stepped inside the baseline to break in the opening game of the second set.
Muguruza could not sustain her advantage, however, and was pegged back instantly.
Williams took advantage of further errors from Muguruza to seal the match and reach the fifth WTA Finals semi-final of her career.
“I played an amazing opponent who has had an amazing year so I was so happy to win the last point,” Williams said.
|White Group||Matches W-L||Sets W-L||Games W-L|
|Karolina Pliskova (Cze) Q||2-1||4-2||28-20|
|Venus Williams (US) Q||2-1||4-3||37-38|
|Garbine Muguruza (Spa)||1-2||2-4||25-32|
|Jelena Ostapenko (Lat)||1-2||3-4||36-36|
Ostapenko thrashes in Pliskova in dead rubber
Earlier on Thursday, French Open champion Ostapenko convincingly overcame Pliskova, who produced an error-strewn display.
Ostapenko said: “It was my last match here today. I really tried to enjoy every moment. I think I was playing quite relaxed, and I just showed my best today.”
Pliskova hope to regain the form she showed in her opening two matches when she takes on the runner-up from Red Group in Saturday’s semi-finals.
|Red Group||Matches W-L||Sets W-L||Games W-L|
|Caroline Wozniacki (Den) Q||2-0||4-0||24-4|
|Simona Halep (Rom)||1-1||2-2||14-18|
|Caroline Garcia (Fra)||1-1||2-3||25-27|
|Elena Svitolina (Ukr)||0-2||1-4||17-31|