Soto hit a tying three-run homer with two out in the ninth inning, Derrek Lee singled in the winning run in the 12th and Chicago beat the Milwaukee Brewers 7-6 on Thursday to move closer to the NL Central title.
The Cubs' magic number for winning their second straight division championship was reduced to two as they sent the Brewers to a crushing defeat.
"Wow!" Soto said. "This year's been really, really crazy. I'm just here for one reason. I want to win and keep going."
Chicago was trailing 6-2 with two out and nobody on in the ninth, with just three hits to that point, before scoring four runs off closer Salomon Torres.
Now, the Cubs can clinch Friday if they beat the Cardinals at home and the struggling Brewers lose in Cincinnati.
"The beauty of baseball is you never know what is going to happen until that final out," Cubs manager Lou Piniella said. "It's uplifting to us and got to be deflating to the other team. ... Let's win tomorrow if we can and whatever happens on the road [to the Brewers] happens."
Milwaukee, which began the day just a half-game back of the NL wild card-leading New York Mets, was on the verge of winning two of three at Wrigley Field and restoring some momentum under interim manager Dale Sveum.
Instead, the Brewers have dropped 13 of 17 during a skid that cost manager Ned Yost his job on Monday.
Milwaukee has nine games left but this will be a tough defeat to shake off.
"A real nice day kind of went haywire right away," Sveum said.
"You're running out of games. It gets to the point, whatever the Mets do, you start thinking you have to win seven out of nine or eight out of nine. That's what it's getting to."
Pinch-hitter Daryle Ward led off the 12th with a walk and was replaced at first by Jason Marquis, who moved up on Reed Johnson's sacrifice. Alfonso Soriano was intentionally walked before Ryan Theriot flied out, sending Marquis to third.
Lee then singled to center off Carlos Villanueva (4-7), leading to a wild celebration.
"It shows the character of our team," Lee said. "All of a sudden in the ninth off a good closer we score four runs and like that it's a tie game. We kept chipping away and grinding it out."
Kerry Wood (5-4) pitched two innings, escaping a second-and-third, no-out predicament in the top of the 12th for the win.
J.J. Hardy singled leading off the 12th and Corey Hart doubled for the Brewers. With the infield drawn in, Craig Counsell grounded out with the runners holding. When Jason Kendall hit a bouncer to third, Aramis Ramirez threw home and Hardy was caught in a rundown and tagged for the second out. Pinch-hitter Joe Dillon then grounded out.
"We had a good chance to win still," Counsell said, "but I didn't get it done."
With the Cubs down to their last out in the ninth, Ramirez hit a sinking liner to left that got past Ryan Braun for a double, and Jim Edmonds followed with an RBI single. Mark DeRosa singled and Soto hit the next pitch deep into the left-center field bleachers as the crowd erupted.
"It was my fault," Torres said. "I should have sealed the deal. I felt like I let the team down, especially given the nature of this series."
The Brewers appeared to have Thursday's game under control with four unearned runs in the sixth off reliever Jeff Samardzija.
Samardzija gave up a one-out walk to Counsell before second baseman DeRosa misplayed Kendall's grounder for an error. Mike Cameron, Ray Durham and Braun delivered consecutive two-out RBI singles to give the Brewers a 4-2 lead.
Hart added an RBI double in the ninth but the Brewers missed a chance to score more.
Hardy was thrown out at the plate on a relay from shortstop Theriot trying to score from first on Hart's hit, and Hart was later tagged out trying to reach third on a ball that got away from catcher Soto.
Dave Bush went five innings, giving up just two hits -- solo homers to Ramirez and Edmonds.
Chicago starter Rich Harden was pitching for the first time in a week and just the second time in 20 days. He had control problems and lasted just five innings while throwing 115 pitches. He gave up only one hit but walked six -- one intentionally -- and struck out seven, giving up a run in the first.
Soto's homer was the fourth given up by Torres in 76 innings. ... Edmonds was ejected in the middle of an 11th-inning at-bat by plate umpire Ed Rapuano when he said something after a 1-1 pitch near the outside corner was called strike two.