When the Chicago Cubs weren’t hitting for extra bases off Mitch Keller, they were stealing them off Yasmani Grandal.

The Cubs had five doubles off the Pittsburgh Pirates right-handed starter and just as many stolen bases against the 35-year-old catcher through the first four innings while clinging to a one-run lead.

The real damage was done against Domingo German, who gave up eight runs on four walks and four hits, including a Dansby Swanson grand slam.

Even then, the Cubs still weren’t finished.

They pounded the Pirates for 21 hits, including nine for extra bases, to cruise to an 18-8 win Monday night before 11,936 at PNC Park. It was the most hits allowed by the Pirates this season and the most they gave up since the New York Yankees had 22 in a 16-0 win on July 6, 2022.

It was quite the reversal from the thrilling ending Sunday, when Grandal hit a two-run home run for a 4-3 walk-off win over the Cincinnati Reds. The Pirates followed that with their second-most lopsided loss of the season, with only a 16-4 defeat at the Colorado Rockies on June 15 a greater run differential.

“We got our butts kicked tonight,” Pirates manager Derek Shelton said. “We come off yesterday, we’re on a high and we get a walk-off win, and tonight we just got beat. They beat us in every facet of the game.”

The game reached comical levels in the ninth inning, when the Pirates replaced Brady Feigl – a 33-year-old left-hander making his major league debut – with first baseman Rowdy Tellez.

It was a rough night for Keller (11-8), who allowed three runs on seven hits and two walks with four strikeouts while throwing 97 pitches in four innings. Keller blamed himself for failing to hold runners, whether due to his rhythm and timing being off or the pitch clock.

“They just had a good game plan with when they were going to go and test us out,” Keller said. “They destroyed us today, destroyed me, personally. Just not good.”

The Cubs finished with eight stolen bases, went 10 for 24 (.417) with runners in scoring position and still stranded 11. Seven players had multiple hits, with Seiya Suzuki and Miguel Amaya both getting four hits and Pete Crow-Armstrong three.

“There wasn’t a lot that went right tonight, so I don’t know if I would highlight the stolen bases as being the issue,” Shelton said. “But, yeah, we’ve got to do a better job of holding runners.”

German tied a career-worst by giving up eight earned runs on six hits and four walks while throwing 71 pitches in 2⅔ innings of relief.

The Cubs took a 2-0 lead in a four-hit, two-steal second inning. Nico Hoerner doubled when his fly ball to shallow center skipped off Ji Hwan Bae’s glove. Hoerner stole third base and scored on a single to left by Crow-Armstrong for a 1-0 lead. Amaya drove in Crow-Armstrong with a single to right to make it 2-0. Ian Happ followed with a double to right to put runners on second and third, but Keller got Michael Busch to ground out to end the frame.

Keller gave up back-to-back doubles to Suzuki and Cody Bellinger to start the third, as the Cubs increased their lead to 3-0. Bellinger stole third, but Keller retired the next three batters to limit the damage, though his pitch count was at 66 through three innings.

Jared Triolo led off the bottom of the third with a triple that skipped past Happ in left, then scored on Bae’s groundout to second to trim it to 3-1. Happ robbed Isiah Kiner-Falefa of an extra-base hit with a sliding catch in front of the bullpen fence at the North Side Notch.

Cubs starter Jameson Taillon (9-8) allowed four runs on eight hits without a walk in 6⅔ innings against the team that drafted him No. 2 overall in 2010. When Taillon left a curveball up and over the middle of the plate, Bryan Reynolds drilled a 360-foot line drive over the Clemente Wall in right for his 20th home run to cut the Cubs’ lead to 3-2.

Reynolds became the seventh Pirate to hit 20 or more homers in four consecutive seasons, the first since Andrew McCutchen did so in seven straight from 2011-17.

German replaced Keller in the fifth and recorded a clean inning before encountering trouble in the sixth. Swanson drew a full-count walk, then reached third on a single by Crow-Armstrong and both scored on a double by Amaya for a 5-2 Cubs lead.

After striking out the next two batters, German gave up an RBI single to Suzuki, then intentionally walked Bellinger and walked Isaac Paredes. Nico Hoerner drew a bases-loaded walk to make it 7-2 before Swanson pounded a first-pitch fastball 405 feet to left for an 11-2 advantage.

The Cubs padded their lead with a six-run ninth, enough cushion to withstand the Pirates scoring two runs in each of the final three innings.

“It’s a 5-2 game and a 1-2 count and he hung a breaking ball (to Suzuki),” Shelton said, “and it kind of fell apart from there.”

Kevin Gorman is a TribLive reporter covering the Pirates. A Baldwin native and Penn State graduate, he joined the Trib in 1999 and has covered high school sports, Pitt football and basketball and was a sports columnist for 10 years. He can be reached at kgorman@triblive.com.