Lopez was first signed by the Seattle Mariners on July 3, 1997 and made his Major League debut on April 2, 2003 after being signed by the Toronto Blue Jays on December 16, 2002 as a Rule 5 draftee. He made 72 appearances in 2003 for the Blue Jays, posting a 3.42 ERA over 732⁄3 innings.
In 2004, Lopez was still in Toronto where he pitched only 21 innings in 18 appearances. Since then, he was involved with the Los Angeles Dodgers and the Philadelphia Phillies organizations, mostly as a Minor League player until he signed a minor-league contract with the Detroit Tigers before the 2007 season. He has since been called up to and sent down from the major league team several times.
In 2008, after spending most of the season with the Tigers, Lopez was sent down to Toledo when Fernando Rodney was activated from the disabled list. Lopez was called up to Detroit July 2 when Zach Miner was sent to Toledo. Although his ERA on the season was a comparatively low 3.55, he allowed 50.9% of inherited runners to score, the second-highest in the American League. Lopez became a free agent after the 2008 season when the Tigers declined to offer arbitration.
Lopez was signed by the Kia Tigers of the Korea Baseball Organization on January 14, 2009. In the 2009 KBO season, he went 14–5 with a 3.12 ERA and 129 strikeouts, leading the league in wins and innings pitched (190.1). Lopez won Game 1 and Game 5 of the 2009 Korean Series and recorded two outs in the eighth inning of the seventh game, which Kia won on a walk-off home run in the ninth. The Game 5 win was a complete game shutout. On December 11, 2009, it was announced that Lopez was awarded the KBO Golden Glove Award for pitcher.