On paper, the contrast between the two players couldn't have been much greater.
World No88 McHale has one WTA title to her credit, Williams has 72, including 23 Grand Slams. And while McHale once reached a high of No24, Williams has been inside the top five for most of the last 20 years.
They had met three times in the past, all in 2016, with Williams winning all three clashes while only dropping one set.
At the start it looked like one way traffic. Williams took her first service game without dropping a point, before quickly going up 40-0 on the McHale serve. But then something changed. McHale found her range, without ever being spectacular, while Williams mixed sweet and sour.
McHale reeled off four games in a row, including breaking Williams' serve twice, as the former World No1 found herself in a bit of a hole.
Williams broke back – roaring in approval – before McHale managed a gusty hold to edge 5-3 ahead. That was crucial, as Williams' serve fell apart in the next game, the ball flying off her frame at 0-40 to give McHale the set in 45 minutes.
Williams recovered in the second set, breaking McHale's serve twice. Instead of going long and wide, she held back a bit and started to force errors from her opponent.
Williams also held the edge throughout the final set, though she was broken when serving for the match at 5-2, as McHale continued to move her round the court.
But eventually the pressure told, and Williams nailed her second match point to book a date in the quarter-finals against German Laura Siegemund, who ousted American wunderkind Coco Gauff in three sets earlier in the day.