In a season that didn't go as planned for Trevor Hoffman, baseball's career saves leader added another milestone to his illustrious career.

Hoffman earned his 600th save Tuesday night, closing out the Milwaukee Brewers' 4-2 victory over the St. Louis Cardinals.

A few months ago, Hoffman couldn't have been sure this day would come. The 42-year-old reliever lost his job as the Brewers' closer in May after a string of bad outings.

"Unfortunately, I was part of the problem this year in not getting my job done early and getting some momentum going," he said.

Hoffman has pitched better of late with a 2.63 ERA in his last 29 appearances and has been getting ninth-inning work as the team tried to help him reach No. 600.

"September isn't the idea of what I had of walking into this room and talking about this. Nonetheless, it doesn't take any of the edge off by any means," said Hoffman, who had an 11.65 ERA in his first 18 appearances this year.

"It almost enhances the idea of being disciplined, and really if you love the game it's going to love you back," he added. "It tests you in a lot of different areas and a lot of different ways, but I'm truly privileged to be here talking to you about this."

Four people were ejected by the umpires, including a fan, on a night that ended with Hoffman being carried off the field by his teammates.

Milwaukee manager Ken Macha was tossed in the second inning, but watched the game from the clubhouse. He said pitching coach Rick Peterson came in to ask him about the ninth inning, and he told him to send Hoffman to the mound.

"I wasn't too concerned about the phone ringing (in the bullpen)," Hoffman said. "I had a pretty good idea I was going to get that call. I knew I was going to get that opportunity. It kind of felt like old times."

The right-hander entered in the ninth to his traditional music, "Hells Bells" by AC/DC, and gave up a bloop single to Colby Rasmus. Pinch-hitter Randy Winn then grounded into a double play.

Hoffman got pinch-hitter Aaron Miles on a grounder to shortstop for the final out and raised his arms in triumph as teammates rushed to mob him near the mound.

"He's one of the best relievers the game's ever seen," Miles said. "I always look forward to competing against him in the ninth inning. Congratulations to him."

Hoffman's wife, Tracy, and three sons, Brody, Quinn and Wyatt, also ran onto the field to hug him and the crowd roared during a standing ovation. Brewers players hoisted Hoffman on their shoulders and carried him toward the dugout.

It was Hoffman's ninth save in 14 chances this season and 600th in 676 career opportunities. He earned his first save for Florida in 1993, then spent most of his career with the San Diego Padres before joining the Brewers last season.

Hoffman stayed in the dugout to receive congratulations from teammates and was given a large painting of himself pitching at Miller Park by Macha and general manager Doug Melvin. Fireworks went off and the No. 599 was peeled off to reveal '600' on a sign next to the Brewers' bullpen in left-center.

"They went wild when I got up in the bullpen," Hoffman said. "It culminated in a crescendo on that last out."

He said he hasn't decided whether he'll return to pitch next season or retire.

"As far as the future goes, I'm going to continue to grind until Oct. 3 and we'll make a decision then," he said.

Hoffman passed Lee Smith as the career saves leader, earning No. 479 while pitching for San Diego against Pittsburgh on Sept. 24, 2006.

Mariano Rivera of the New York Yankees is second in major league history with 555 saves.

Casey McGehee had a single and double with three RBIs for Milwaukee in a game that featured four ejections: Macha, Milwaukee center fielder Chris Dickerson, Cardinals pitching coach Dave Duncan and a fan.

In the bottom of the seventh, plate umpire Bob Davidson stopped the game and ejected a fan for heckling Cardinals catcher Yadier Molina. Davidson walked to the seats near the backstop netting and motioned for the fan, who was wearing a T-shirt with a Brewers logo on it, to leave his seat.

An usher motioned him away, and the fan stood and posed with his arms extended in the air in a V shape while drawing loud cheers from the crowd.

Sean A. Otto, 44, of Waukesha, was handcuffed at the ballpark and cited for disorderly conduct by Milwaukee police.

In the second, Macha was tossed by second base umpire Tim Timmons while arguing an interference call that cost the Brewers a run.

Cardinals pitching coach Dave Duncan was ejected from the dugout by Davidson in the third for arguing balls and strikes.

In the fifth, Dickerson was called out on strikes and slammed his helmet to the ground while walking back to the dugout, prompting an immediate ejection from Davidson.

"It was an interesting evening," Macha said. "One coach, one manager, one player and one fan. Everybody got thrown out."

Brewers starter Chris Narveson (11-7) pitched seven innings, giving up two runs on four hits and three walks while striking out nine.

Narveson said it was a special win because it included Hoffman's milestone.

"To look up and see that he's got his 600th save and you were the guy that started the game — it's a great feeling," Narveson said.

St. Louis starter Kyle Lohse (2-7) went five innings, giving up four runs and seven hits. In four starts since returning from the disabled list, he is 1-3 with a 10.31 ERA.

"Tough way to lose," Lohse said. "It's frustrating to give up the two-out hits again."

Milwaukee won for only the second time in eight games.

Notes: Lohse spent 84 days on the DL and had surgery on his right forearm for nerve compression. ... The Cardinals recalled 3B Tyler Greene from Triple-A Memphis before the game. He started and went 0 for 2 with an intentional walk. ... Narveson was a second-round draft choice of the Cardinals in 2000.