In 2007, Hafner batted .266 for the season, compared to .308 in 2006 and .305 in 2005. He hit 24 home runs and 100 runs batted in, his fourth straight season of 100+ RBI. Some critics pointed to Hafner's disappointing performance being due to unfinished contract negotiations, but Hafner denied this. The Indians signed Hafner to a four-year, $57 million contract extension during the All-Star break, keeping him in Cleveland through the 2012 season. As of the end of the 2007 season, Hafner ranked first all-time for career home runs by a player born in North Dakota with 142.