The 23-year-old Spaniard won 7-5, 3-6, 7-6 (9/7) over the 19-year-old Kasatkina, who served for the match at 5-4 in the third set, only to be broken by the fourth-seeded Muguruza.
Muguruza then kept her nerve in the tiebreak, holding on to win in just under three hours.