The Pittsburgh Pirates selected him off waivers in August 2006 and he made his Major League debut on September 7, 2006 for the Pirates against the Chicago Cubs. He appeared in seven games for the Pirates in 2006 and 17 games in 2007. He was 0–1 with an 8.10 ERA in his two seasons with the Pirates. Pérez became a free agent at the end of the 2008 season and signed a minor league contract with an invitation to spring training with the Atlanta Braves in January. He spent the season with the Triple-A Gwinnett Braves, appearing in 47 games. He signed a minor league contract with the Los Angeles Dodgers in December. He was assigned to the Triple-A Albuquerque Isotopes to start the season. He appeared in 45 games for the Isotopes, with a 4–3 record and 2.96 ERA.
Philadelphia Phillies
Perez signed a minor league contract with the Philadelphia Phillies before the 2011 season. He had his contract purchased on June 23. Pérez pitched an immaculate inning in the 10th inning in a win against the Braves on July 8, 2011, striking out the side in 9 pitches, making him the second Major League pitcher to ever pitch an immaculate inning in an extra inning of baseball. Pérez received his first career win after Raúl Ibañez hit a walk-offsolo home run in the bottom of the inning. He was designated for assignment by the Phillies on September 16, 2011.
Milwaukee Brewers
On December 21, 2011, Pérez signed a minor league contract with the Milwaukee Brewers. He also received an invitation to spring training. He was called up to Milwaukee on May 19, 2012, to replace Vinnie Chulk who was designated for assignment.
Toronto Blue Jays
On December 11, 2012, the Toronto Blue Jays announced that Pérez had been signed to a minor league contract with an invitation to major league spring training. He pitched for the Triple-A Buffalo Bisons until he was called up by the Blue Jays on May 29. Pérez set a Blue Jays franchise record in a game against the Los Angeles Dodgers on July 23 by pitching his 22nd consecutive scoreless inning to begin his career in Toronto. The previous record had been held for nearly 35 years by Víctor Cruz, who pitched 21 consecutive scoreless innings from June 24 to July 31, 1978. Pérez's streak ended at 22 in the following game, when he gave up a 2-run home run to Mark Ellis and a solo home run to Yasiel Puig. Pérez came out of a game against the Oakland Athletics on August 10 with an apparent arm injury. He was moved to the 60-day disabled list on August 10 with a partially torn ulnar collateral ligament in his throwing arm. Perez opted to rehab the injury, rather than undergo Tommy John surgery. Pérez was outrighted off the 40-man roster on November 5, 2013. He signed a minor league contract with an invitation to spring training. He was reassigned to minor-league camp on March 2, 2014, without making an appearance. Pérez was released on March 23, 2014.
Texas Rangers
After spending the 2014 season as a free agent, Pérez signed a minor league contract with the Texas Rangers in January 2015. They released him on May 8 after he posted a 10.80 ERA in nine relief appearances for their Triple-A club, the Round Rock Express.