While Swiatek has not dropped a set on the Paris clay, she has shown signs of fallibility in her past two matches.
She struggled with her service games and her forehand continued to be errant as Zheng, a rising star making her French Open debut, brought out mistakes with her quality returning.
Zheng brilliantly fought back from 5-2 down in the first set, and from the same deficit in the tie-break, to threaten a stunning upset.
Afterwards she said the stomach pain was caused by her period, adding: "I wish I could be a man on court.
"It's just girls' things. I have to do sport and I always have so much pain in the first day. I couldn't go against my nature.
"The leg was tough but compared to the stomach that was easy."
Not since 23 April had Swiatek dropped a set, when she lost the opener against Russia's Liudmila Samsonova in their Stuttgart semi-final.
She managed to turn that match around, going on to win her next 18 sets, and started the fightback against Zheng with two breaks in the second set.
At the changeover, Zheng asked for treatment on her right thigh and reappeared with a lot of strapping.
That led to a one-sided set in which Zheng struggled to move across the baseline, and the Chinese player was broken again at the start of the decider.
Zheng's physical condition appeared to marginally improve in the third and allowed her to once again put pressure on Swiatek's serve.
Still lacking precision with her shots and gesturing her frustration after errors, the world number one needed to save two break points at 2-1 before winning the final three games to seal victory after almost three hours on court.
"I think it's important that I had this kind of match - it is kind of like a cold shower," said Swiatek.
"It reminded me how to find these solutions after losing a first set.
"I feel I'm going to take some positives from it. I think it's going to give me a lot before the next matches."
ncG1vNJzZmivp6x7o67CZ5qopV%2BovbC%2B02irnqaensBwgpBvam5oYW0%3D