The 2017 Charleston champion broke late in the first set and early in the second set to improve her career head-to-head record against the 2019 winner to 4-1.
Stephens bests Keys in all-American battle
It was Stephens who had plenty of chances to break early on as she held break chances in three of Keys' first five service games. The defending champion from 2019 saved both chances in the opening game and seventh game to stay in front 4-3.
It was the ninth game that proved to be the eighth seed's undoing as she handed Stephens the break with a backhand error and after saving a break point of her own, the 2017 champion won the set after a sumptuous lob winner.
Keys was again under pressure early in the second set and in the third game, a forehand error at 15-40 gave Stephens the only break she needed and with it, a 2-1 advantage.
Staving off a break point in the eighth game, Stephens held for a 5-3 edge and serving for the match at 5-4, she held triple match point. After Keys saved the first two, a backhand error on the third gave Stephens the win and a spot in the third round.