"I've been feeling good for the last couple of days," Ishikawa said. "I've had some decent at-bats. I've just had a few hits taken away. I was just fortunate for them to fall tonight."
The Royals scored three runs in the seventh, sending Pittsburgh starter A.J. Burnett to the showers and cutting the Pirates' advantage to one run. The inning began with third baseman Mike Moustakas' ninth home run.
Walker, the Pirates' second baseman, supplied the antidote with a two-run triple in the eighth.
Burnett (7-4) picked up the victory, although he allowed six runs on 11 hits, a walk, two hit batters and a balk in six-plus innings.
Mark Melancon pitched the ninth to collect his National League-leading 30th save.
The Pirates pieced together five consecutive hits to begin the second inning, producing four runs off Royals right-hander Yordano Ventura.
"Our game plan coming in was getting their pitcher to throw strikes," Pittsburgh manager Clint Hurdle said. "Our hitters got pitches to hit, and they put good swings on them. We still did our fair share of chasing, but (Ventura has) got good stuff. It's tough to lay off some of the stuff. Out of his hand, it looks like a strike."
Left fielder Starling Marte and shortstop Jung Ho Kang started the rally with singles. Designated hitter Pedro Alvarez grounded a single into left to score Marte. Catcher Francisco Cervelli laced a single to center, and third base coach Rick Sofield held up Kang. However, when the ball scooted away from Cain for an error, Kang scored.
Ishikawa drilled a double high off the left field wall to drive in two runs.
The Royals scored a run in the first. Shortstop Alcides Escobar singled on Burnett's first pitch and stole second on his third pitch. Moustakas' single to left brought home Escobar. Moustakas tried to stretch it into a double but was out at second.
The Pirates added a run in the fourth when center fielder Andrew McCutchen's double scored right fielder Gregory Polanco, who led off the inning with a double.
The Royals stole a run in the fourth. With two outs, right fielder Alex Rios doubled and moved to third on left fielder Jarrod Dyson's infield single. Dyson then got caught in a rundown, which allowed Rios to steal home, beating Kang's throw to the plate.
Kang led off the fifth with a double, which was Kansas City manager Ned Yost's cue to go to the bullpen, replacing Ventura with Kris Medlen, who was just activated from the disabled list. Medlen, back from Tommy John surgery performed in March 2014, made his Royals debut.
Medlen struck out the first two Pirates before yielding a home run to Ishikawa. That finished the line on Ventura, who was charged with six runs on 10 hits and a walk in four-plus innings.
"He just struggled with command," Yost said. "He was behind in the count a lot. Then pitches caught the big part of the plate. His stuff was good."
Ventura said, "I just left too many pitches over the plate. That wasn't my intention, but that's what happened and I got hit."
The Royals cut the lead to 7-4 in the fifth when Morales homered off the right field foul pole with Hosmer aboard.
NOTES: The Pirates placed SS Jordy Mercer on the disabled list with a Grade 2 medial collateral ligament left knee sprain and contusion. It is anticipated he will be out six weeks. The Pirates purchased the contract of INF Brent Morel from Triple-A Indianapolis and transferred 1B/OF Corey Hart to the 60-day disabled list. ... Royals RHP Kris Medlen, out since undergoing a second Tommy John surgery in March 2014, was activated from the disabled list. Medlen, who made six rehab starts, will be used as a reliever in the beginning. He yielded four runs on four hits in 3 1/3 innings Monday against the Pirates in his first outing. ... The Royals sent RHP Yohan Pino to Triple-A Omaha. ... Royals LHP Jason Vargas will come off the disabled list Tuesday to start against the Pirates, who will counter with RHP Gerrit Cole.