The Spaniard has not won a title since defending his French Open crown in June last year, which was his fifth title of 2006.
The year before he won 11 titles, including four ATP Masters Series crowns.
"This week is the best week in the last six months," Nadal said. "I think I played my best tennis today against one of the most difficult opponents."
Nadal will go after his 18th career title on Sunday against 12th-seeded Novak Djokovic of Serbia.
Novak had no trouble beating 13th-seeded Andy Murray from Great Britain, 6-2, 6-3.
Roddick failed in his attempt to reach his eighth career Masters Series final.
A win at this tournament would have given him a career sweep of the four North American Masters Series tournaments.