Makarova broke Kerber at the first time of asking to move 3-0 ahead early in the first set.
The Russian secured a double break to go 5-2 ahead and serve for the match, but the fifth seed dug deep to stage a rousing comeback.
She broke twice to get back on serve, only to throw it away. Eventually, Makarova closed it out to seize the initiative.
The pair matched each other stride for stride in the second set, but Kerber was struggling on her own serve.
Makarova's persistence paid off as she secured the crucial break to go 5-4 ahead.
She did not repeat her mistakes from the first set and held comfortably to become the first player through to the last eight.