– Paul Molitor thinks Kyle Gibson has got some dog in him. That’s a good thing.

“We’ve had a few opportunities where you want to try to get your guys to bulldog through tough outs late in games,” Molitor said. “It was tough. He was getting up there in pitches. But I tried to let him ride it out.”

Gibson came through like a purebred Thursday, working his way out of an eighth-inning jam, stranding the tying and go-ahead runs and pitching the Twins to a 2-0 victory over the first-place Royals. Gibson gave up only four hits and for the second time this season did not surrender a run over eight innings.

The third-year righthander reduced his career ERA against the Royals to 2.20, and he did it despite issuing four walks. But his sinker was working, and Molitor showed faith with the game on the line and Gibson’s pitch count inching above 100. With the Twins up 1-0 and ultrasonic pinch runner Jarrod Dyson having stolen second base and eyeing third, Gibson induced a groundout to third from Alcides Escobar, but then walked Mike Moustakas on a 3-2 sinker.

Lefthander Aaron Thompson and righthander Casey Fien were warmed up. Surely Gibson expected to be pulled then?

“I knew [righthanded-hitting Lorenzo] Cain was coming up, and I figured they would leave me in there and try to get the double play,” Gibson said. Instead, he got Cain reaching for an outside sinker for a strikeout. But that brought up lefthanded-hitting cleanup hitter Eric Hosmer, who earlier had beaten a shift with a bunt single and walked.

Gibson’s pitch count stood at 109 at that point, already his second-highest total of the season. He looked at the dugout. No Molitor.

“I don’t want to say I was surprised, because I definitely wanted to pitch against him. But I appreciated it,” Gibson said. “It showed a lot of confidence in me, and allowed me to have a lot of fun out there.”

That fun came in the form of a 2-2 sinker that Hosmer bounced harmlessly to Brian Dozier at second base. The shutout was preserved — and the Bulldog was still hungry.

“I told them I wanted to go back out for the [ninth] inning,” Gibson said. “They told me that wasn’t going to happen.” Instead, Glen Perkins earned his 26th save with a perfect ninth.

Still, it was a nice way to open July for Gibson, whose ERA in June was a subpar 4.70. “He’s had a couple of really good starts lately. He’s developing a really good mentality,” Molitor said. “They weren’t really able to elevate him pretty much all night. He was just making pitches.”

That’s good, because the Twins weren’t hitting many from Chris Young and the Royals bullpen. A Kurt Suzuki double and a Danny Santana triple produced one run, but the Twins were 1-for-11 with runners in scoring position until adding on an insurance run — on an Eduardo Escobar triple, after Miguel Sano’s first major league hit — in the ninth.

Runs were so hard to come by — and they always are against the Royals, who held the Twins to three runs in three games last month in Target Field — that Molitor even had cleanup hitter Trevor Plouffe square around to bunt with Joe Mauer on second base in the sixth inning. Plouffe got down the sacrifice, but Mauer was stranded at third.

“These are tough games here,” Plouffe said. “That run felt really important, so I wanted to do whatever the team needed from me.”