The American blasted 25 winners en route to her fifth straight victory over the German, who committed 38 unforced errors in the 1 hour, 40 minute match.
Stephens takes ninth straight set from Kerber
Both players struggled in their opening service games with Stephens saving two break points and after Kerber held easily for a 2-1 lead, the fifth seed was under pressure again.
She fended off five break points, saving them with some spectacular winners to hold for 2-2. In the reigning Wimbledon champion's next service game, the American blasted an overhead winner at 15-40 to claim a 3-2 lead.
Kerber was becoming wasteful on her break chances and she failed to convert two more in the sixth game, one of them saved by Stephens with a brilliant backhand winner.
After squandering her first seven break points, the German let down, dropping serve to give Stephens a 5-2 lead, but she squandered three set points as Kerber finally broke to cut the deficit to 5-3.
Her efforts were ultimately futile as she fell behind 15-30. After an errant drop shot brought up two set points for the American, Stephens took advantage, firing a deep backhand to force an error from the German and grab a one-set lead.
American continues fine form, reaches last four
The rallies continued to be grueling as the second set got underway with games getting longer. Kerber saved a break point in the second game and Stephens held for a 2-1 lead courtesy of her backhand.
In the next game, 22 points were played and on her seventh break opportunity, Stephens converted when Kerber missed a drop shot to hand the American a 3-1 lead.
The German was back on serve as the Miami champion surprisingly faltered, making a number of unforced errors and wasted three game points to see her advantage disappear.
Kerber faltered on serve one final time trailing 4-3. The German saved three break points as her forehand briefly caught fire, but Stephens reached a fourth chance after a backhand error by Kerber.
After Kerber punched a forehand miscue into the net, the American led 5-3 and served for the match. She reached 40-0 and after the German drove a final backhand, Stephens sealed her semifinal spot opposite Karolina Pliskova.