NEW YORK -- Jose Contreras' streak of winning decisions came full circle and ended against the team and pitcher it started against.
Contreras (9-1) hadn't lost since dropping a 4-2 decision to Minnesota last Aug. 15. The streak started six days later when he pitched eight innings in a 6-2 victory over Randy Johnson and the Yankees, his former team.
"I would've liked the streak to continue but I wasn't really thinking about it," Contreras said through an interpreter. "I felt very good today. I had all my pitches going and I felt strong."
Kyle Farnsworth (3-4) pitched a perfect eighth, and Mariano Rivera worked the ninth for his 20th save in 22 chances. Rivera allowed two runs before he got pinch-hitter A.J. Pierzynski to fly out to right with a runner on third to end it.
"The last one was really the only one I had a chance to do anything with," Pierzynski said of the 10-pitch at-bat. "The thing about Mariano is you wait for him to miss and he doesn't miss."
Brandon McCarthy came in and struck out pinch-hitter Andy Phillips before White Sox manager Ozzie Guillen replaced him with Neal Cotts. Cabrera then hit an 0-1 pitch from Cotts up the middle to give New York a 4-3 lead.
Cabrera, who popped out with the bases loaded to end the fourth, said he was able to put that missed opportunity behind him.
"What happened in the fourth has nothing to do with what happened in the ninth or in the bottom of the eighth," he said through an interpreter. "I just went up there with one thing in mind, just to do the job."
Miguel Cairo added a sacrifice fly, and Johnny Damon also had an RBI double in the inning for the Yankees, who got a solid outing from Johnson in their first game after the All-Star break. New York has won five of six.
"The eighth inning was great," said Joe Torre, who picked up his 1,927th win as a manager to pass Casey Stengel for 10th place on baseball's career list. "We were very patient at the plate. We did some good things and hopefully we can build this into something."
Contreras, traded by the Yankees to Chicago two years ago, allowed seven hits, walked three and struck out three. His franchise-record winning streak tied two others for the second-longest in the major leagues over the past 40 years.
He dropped to 17-1 in 25 starts since his previous loss.
"He threw the ball better today than he had the last couple of outings," Guillen said. "If he continues to throw the ball like that he'll win a lot of games in the second half."
Johnson allowed three runs and four hits in seven innings. He struck out six and didn't walk a batter.
"I hadn't pitched in eight days so it took me a little while to get going," Johnson said. "I got some big outs and was able to shut a good team down."
Aaron Guiel's leadoff single in the third was the Yankees' only hit off Contreras in the first three innings and the right-hander got Cairo to ground into an inning-ending double play one batter later.
The Yankees broke through in the fourth, pushing across two runs to tie it. Posada hit a bases-loaded single to right with one out and Williams added a sacrifice fly to left.
Guiel added a solo homer in the sixth to put the Yankees in front.
- Crede was hit on his calf by a pitch in the seventh and removed in the eighth. Pablo Ozuna moved from LF to 3B and Scott Podsednik came in to play LF. Guillen said he doubts Crede will play Saturday.
- RHP Sidney Ponson signed with the Yankees and is slated to start Tuesday against Seattle. Ponson was 4-4 with a 5.24 ERA when he was released by the Cardinals last week. RHP Shawn Chacon was moved to the bullpen, OF Kevin Thompson was optioned to Triple-A Columbus and RHP Darrell Rasner was transferred to the 60-day disabled list to clear space for Ponson.
- Pierzynski said his $2,000 fine for his part in a May brawl in a game against the Chicago Cubs was reduced to $250 on appeal.
- Contreras became the first pitcher to start consecutive games for the White Sox since Wilbur Wood in 1976.