Sheffield was fielding Jason Varitek's two-run triple along the right-field fence in the eighth inning of Boston's 8-5 victory Thursday night when a fan swung a short uppercut in his direction, appearing to graze the side of the slugger's face with his right arm.

"I just felt something hit me in the mouth," Sheffield said. "I don't know if he hit me or not, it felt like it. I thought my lip was busted."

After Sheffield picked up the ball, he shoved the fan before throwing the ball back to the infield. Another fan tossed a beer at Sheffield, who whirled around with a cocked fist but restrained himself.

He shouted in the face of the first man - but did not throw a punch. A security official quickly jumped over the three-foot wall to separate the two.

"It could have been worse if I didn't hold my composure," Sheffield said. "I almost snapped, but the thing is I thought about the consequences."

The fan was ejected from the ballpark but not arrested.

"It's just a baseball game," Sheffield said. "To get punched in the mouth, you don't expect that in a baseball game."

During the 2003 AL playoffs, two Yankees players got into a brawl with a Red Sox groundskeeper in New York's bullpen.

Relief pitcher Jeff Nelson and outfielder Karim Garcia were charged with assault but agreed to a deal last October that called for the charges against them to be dropped in six months.

The near-fight between Sheffield and the Boston fan Thursday night was the latest problem between fans and players at a sporting event.

On Nov. 19, players and fans exchanged punches in the stands near the end of a Pacers-Pistons game in one of the worst brawls in NBA history. The mayhem left several people injured and prompted a police investigation.

Last September, the Texas Rangers got into a fight with fans in Oakland, and Rangers reliever Frank Francisco was arrested after throwing a chair into the stands that hit a woman and broke her nose.

Edgar Renteria's RBI double in the eighth broke a 5-5 tie, and Boston took two of three from its rival to even the season series at three games apiece.

Randy Johnson gave up three homers for only the 12th time in his career, and Red Sox manager Terry Francona and hitting coach Ron Jackson were ejected after questioning calls by plate umpire Greg Gibson.

Johnson left with the score 5-5 after seven innings and Tom Gordon (0-1) fell behind before getting an out. Johnny Damon led off the eighth with a single and scored on a double by Renteria, who had made the last out for St. Louis in Boston's sweep of last year's World Series.

 Blue Jays 2, Rangers 1: At Arlington, Texas, Roy Halladay pitched a five-hitter for his 16th career complete game, and pinch-hitter Russ Adams drove in the go-ahead run for Toronto as the Blue Jays beat the Texas Rangers.

 Indians 8, White Sox 6: At Cleveland, Travis Hafner sparked a three-run sixth inning with a two-run double and Victor Martinez hit his first homer of the season for Cleveland.

 Mariners 10, Royals 2: At Kansas City, Mo, Richie Sexson and Jeremy Reed had three RBIs apiece to help Seattle beat the punchless Royals for a three-game sweep.

 Twins 10, Tigers 4: At Minneapolis, Brad Radke finally gave Minnesota what it was expecting from him with six strong innings and the Twins broke the game open with a big sixth inning to complete a three-game sweep of the Detroit.