Six-time champion Djokovic is back in the Chinese capital for the first time in 11 years and extended his winning run to 31 victories and no defeats on Friday, but only after dropping a set for the first time since the same round in 2013 and again taking a timeout before finishing strongly in a 4-6 7-6 (7-2) 6-2 victory.
Djokovic opened up about an ongoing medical condition he is managing after an early loss in Cincinnati in August, and he appeared to struggle with his breathing early in the second set against home hope Bu.
Having lost the opening set, the Serbian looked in danger when he let an early break in the second go, accepting a time violation as he fought to regain his breath between points.
Djokovic then consulted the trainer, as he had in his first-round win over Nuno Borges, but he dominated the tie-break and Bu was unable to maintain his high level in the decider.
"I had to play very well. I had to serve well in the right moments," Djokovic said. "He was so solid. I struggled to really find holes in his game and was hitting his spots really well with his serve.
"Credit to him for playing well. The atmosphere was amazing. Packed stadium again for three hours — what a match to be a part of!"
If Djokovic is to win another title, he is likely to have to beat US Open champion Alexander Zverev next, with the German taking on Shang Juncheng on Saturday for a place in the quarter-finals.