The fourth seeded Muguruza won 7-5 6-4 to exact revenge for her loss in last year’s Wimbledon final against Williams.
Muguruza used her big groundstrokes to keep the often dominant Williams off-balance and overcame nine double-faults to pull off the shocking upset.
The 22-year-old Muguruza is Spain’s first female champion at Roland Garros since the popular Arantxa Sanchez-Vicario won in 1998.
Williams, now age 34, was looking to win her 22nd Grand Slam singles title and tie the legendary Steffi Graf’s Open-era record.
“I’m so, so excited – to play in a Grand Slam against one of the best players, it’s the perfect final,” Muguruza said. She added, “I’m so happy. I had to be very ready and concentrated on all the points and just to fight as much as I can. All the matches I’ve played against her helped me. It’s our favorite tournament in Spain and I want to thank all my Spanish supporters.”