Philadelphia, PA – Shane Victorino finished 2-for-3 with a run clinching 9-2 game set.
Roy Oswalt (8-9) notched his first scoreless outing since August 19 at Washington, scattering five hits and striking out seven over seven innings.
"Anybody could come out here tonight and have a good chance to win. With the starting staff we got, I just happened to have had the ball tonight," said Oswalt about his role in the clincher. "I was able to throw a good game. They gave me a couple runs to work with."
He departed with a seemingly safe 3-0 advantage.
In the eighth, Michael Stutes served up four straight two-out hits -- the last two to Lance Berkman and David Freese which brought the Cards within 3-2. Brad Lidge came on to retire Allen Craig on a grounder to second.
In the home half, Victorino provided the Phils an insurance run with a one-out RBI single. Chase Utley was plunked to load the bases, and after Ryan Howard struck out, Hunter Pence beat out a grounder to shortstop to make it 5-2.
"We've had to battle through a lot of stuff to get here. Bringing Hunter over here, that extra energy to our ballclub, it's a great feeling to once again be at this point," said Howard of his new right-fielder, who arrived from Houston.
Ibanez followed with a shot to right and the home team claimed a seven-run advantage.
Ryan Madson turned in a scoreless ninth and Philadelphia's fifth consecutive NL East crown was assured.
"Our goal is not accomplished yet. It's the first step, and we've got a few more steps to go," added Utley, who has been a key player in all five division championships.
Jake Westbrook (12-9) lasted only 3 1/3 innings, charged in the loss with five hits and two runs -- one earned -- while walking five for the Cardinals.
St. Louis, which had its three-game win streak snapped, fell 6 1/2 games behind Milwaukee in the NL Central. The Brewers routed the Reds in Cincinnati later Saturday.
The Cardinals also slipped 4 1/2 games behind Atlanta in the NL wild-card race, with the Braves taking a 1-0 decision over the Mets.
The Phils got on the board in their first at-bat, as Jimmy Rollins stroked a leadoff single, moved to second on a Victorino groundout and scored on Pence's two-out double.
Philly left the bases loaded in the third after Ibanez popped to short, but tacked on one more in the fourth.
Westbrook loaded the sacks with one down on a walk, fielder's choice grounder and a single, then Victorino worked a four-pitch walk to force in a run. Arthur Rhodes got the call and retired Utley on a fly to right and Howard on a grounder.
Victorino launched a one-out solo shot to center in the sixth off Kyle McClellan to boost the Phils' edge to 3-0, and Oswalt worked out of a jam in the seventh.
The Phillies won their 98th game of the season, eclipsing the 97-win clubs from 1993 and 2010, also moving into second place on the all-time franchise list for victories in one year. The record remains 101 wins, accomplished in 1976 and '77...It was also the earliest, in terms of games, that the Phillies have clinched a division, in their 150th contest. The prior mark was Game 156, in 1976...It was also the earliest in terms of date that the club locked up a division...Philadelphia became the fifth club in baseball to win their division for at least five consecutive years, after the Braves (1991-2005), Yankees (1998-2006), Athletics (1971-75) and Indians (1995-99)...Ibanez connected for his ninth career grand slam.