Ford had 23 points and 10 assists as the Raptors snapped Portland's five-game winning streak.
Portland's Zach Randolph missed a jumper from the free-throw line as time expired. He had 20 points and seven rebounds.
The Blazers led 100-98 after Randolph hit a hook shot in the lane with 39.7 seconds left. Ford made one of two free throws and Brandon Roy missed with 8.5 seconds to go.
Ford hit the game-winning shot Wednesday night against the Los Angeles Clippers. That was the first option this time, too.
"The ultimate goal was to drive and if I had a shot, I had a shot, but someone helped (on defense) when they shouldn't have," Ford said.
Anthony Parker had 13 points, Rasho Nesterovic had 12 and Bargnani 11 for Toronto, which has won five of its last six games. Bargnani, the top pick in the NBA draft, is averaging 15 points over his last four games.
Toronto had a chance to win in regulation with the score tied at 90. Ford's drive to the basket missed and Jorge Garbajosa appeared to beat the buzzer with a putback. He was mobbed by teammates, but after watching the replay, officials waved off the basket.
Roy had 16 points, 10 rebounds and eight assists for the Blazers in his second game back from a foot injury. Travis Outlaw had 18 points.
"We had every opportunity to win, but you've got to make plays," Portland coach Nate McMillan said. "We had three opportunities to do that and we didn't execute down the stretch."
Portland suffered from turnovers and poor outside shooting -- but the biggest problem was containing Ford's penetration. He blew past Blazers guards at will.
"They kept getting good scores from T.J.," Portland center Jamaal Magloire said. "He demanded so much attention throughout the game."
Fred Jones had 12 points for Toronto and Garbajosa had 10.
The Blazers made just one of 12 3-pointers in the first half and trailed 52-49 at the break. The Raptors shot 55 percent from the field, led by Bargnani's nine points.
Toronto led throughout the third quarter until back-to-back jumpers by Juan Dixon and Outlaw put the Blazers up 72-68. Jones threw up an airball and Dixon scored at the other end just before the end of the third.
The Raptors went on a 7-0 run to tie it at 78 as Portland went scoreless for more than 4 minutes.
Magloire stopped the slide, scoring with 6:42 left in the game, and Jarrett Jack followed with a 3-pointer.
Jones got Toronto within two with a driving layup at 2:59 and Garbajosa scored from the top of the key to tie it at 90 with 37.3 seconds left.
Jack had 12 points for the Blazers. Magloire had 15 rebounds.
Despite the good first half, Bargnani sat for long stretches in the second, and didn't score again until his game-winner.
"He came back to the bench and said, 'See, I sit for 20 minutes and I still make the shot,"' Toronto coach Sam Mitchell said. "You know what I told him: 'That's why you're the No. 1 pick."'
Portland was 2-of-17 on 3-pointers. ... Joey Graham had six points for Toronto. Portland's Stephen Graham, who was on the inactive list, is his twin brother. ... Toronto's Chris Bosh missed his eighth straight game with a bruised left knee.