The game lasted 4 hours, 7 minutes, and included 17 walks, seven hit batters and 27 runners left on base.
''It was weird,'' Stallings said. ''Weird. That's all I got for you.''
Stallings hit a two-run double off the top of the left-field fence in the first inning, then added an RBI single in the second. That helped the Pirates take a 5-3 lead en route to their third win in four games.
''That was not the cleanest game we're going to play all year long,'' Pittsburgh manager Derek Shelton said. ''Sometimes you win ugly and tonight we won ugly.''
San Diego had its four-game winning streak end as Snell retired just two of the eight batters he faced. The 2018 AL Cy Young Award winner had his worst outing in three starts since being acquired from the Tampa Bay Rays in an offseason trade. He has pitched a total of 10 1/3 innings.
''My stuff was better than what it's been,'' Snell said. ''There is no reason to pitch like this, but I've got to learn from this outing, the mistakes I made, and get better. I've got to figure out what to do and get ready for the next one.''
Stallings said the Pirates were patient against the San Diego star, who was famously dominant in Game 6 of last year's World Series before being pulled early as the Rays went on to lose the game and the series to the Dodgers.
''It was just quality at-bat after quality at-bat,'' Stallings said. ''Just staying in the approach, trying to battle and waiting for him to make a mistake.''
Pirates starter Chad Kuhl had a career-high seven walks in 3 2/3 innings. He was charged with four runs, three earned, and has 15 walks in 10 2/3 innings over three starts this season. Chris Stratton (1-0), the fifth of seven Pittsburgh pitchers, worked a scoreless seventh inning and was credited with the win.
Erik Gonzalez had three of Pittsburgh's 12 hits.
The Padres' Trent Grisham led off the game with a homer to right-center. He has connected in three straight games.
After San Diego went ahead 2-0, Snell lasted 38 mostly ineffective pitches. Stallings scored on a double by Gonzalez to deep center field that made it 3-2.
The Padres tied it in the second when Grisham scored on a wild pitch by Kuhl. Pittsburgh went ahead for good in the bottom half against Nabil Crismatt (0-1) when Bryan Reynolds hit an RBI single and scored on Stallings' base hit.
Crismatt helped save the Padres bullpen by pitching five innings, allowing four runs.
Pittsburgh pitchers issued 13 walks. The Padres, though, stranded at least two runners on base in six innings.
WARNINGS ALL AROUND
The umpires warned both teams in the eighth inning after San Diego's Taylor Williams hit Phillip Evans with a pitch. Williams then plunked Adam Frazier on the foot three batters later but was not ejected.
Evans and the Padres' Jorge Mateo were both hit twice.
''I don't think there was any intent on any of those pitches,'' San Diego manager Jayce Tingler said.
CUP OF JOE
Joe Musgrove will start for the Padres on Wednesday night, his first outing since throwing the first no-hitter in the franchise's 52-year history last Friday against the Texas Rangers.
Musgrove is finding out his achievement is serving up a positive effect on his family, too.
The right-hander's parents own and operate a coffee shop in Alpine, California, a San Diego suburb. Padres fans have been flocking there since Musgrove's gem.
''It's something that's been in the family for 20 years, a small drive-through in a small town, so they don't usually do crazy business,'' Musgrove said.
''But the last few days have been some of the best days they've ever had. I really appreciate people helping support their small business,'' he said.
Padres: RF Wil Myers left for a pinch hitter in the fourth inning because of right knee inflammation. His seven-game hitting streak ended. ... LF Tommy Pham stayed in the game after getting hit in the helmet by a 94 mph fastball in the first inning.
Pirates: 3B Ke'Bryan Hayes (left wrist strain) will not be activated from the injured list Wednesday, the first day he is eligible. The rookie is still unable to swing a bat.
Musgrove will oppose LHP Tyler Anderson (0-2, 5.23 ERA). The Pirates traded Musgrove to the Padres in January. Anderson is 3-2 with a 2.61 ERA against San Diego in nine career games.
More AP MLB: https://apnews.com/hub/mlb and https://twitter.com/AP-Sports
Copyright 2021 STATS LLC and Associated Press. Any commercial use or distribution without the express written consent of STATS LLC and Associated Press is strictly prohibited.