Cabrera tied it with a leadoff shot to left in the sixth and Morneau hit a two-out tiebreaking drive to right in the eighth for his 30th homer. Pinch-hitter Michael Cuddyer added a two-run double in the ninth.
"Fortunately we took advantage of the very, very few mistakes that Halladay made," Cuddyer said.
Pavano (12-11) allowed one run and six hits in 7 1/3 innings to win for the first time in three starts, improving to 3-3 since he was acquired last month in a trade with Cleveland.
"Our story was Pavano," Twins manager Ron Gardenhire said. "He was fantastic. What a great night."
Halladay (14-9) allowed nine hits, struck out nine and walked one in his major league-leading seventh complete game. The right-hander dropped to 8-1 with a 2.90 ERA in 13 games, 11 starts, against Minnesota, which was the only AL team that hadn't pinned a loss on him.
"I know I made mistakes that cost me, and that bothers me, but any time you're not winning games, it's frustrating," Halladay said.
Coming off a one-hitter against the New York Yankees on Friday, Halladay was solid again in this one, striking out five of six in one stretch, but still lost for the fourth time in five starts.
The crowd of 11,159 was the smallest in the 20-year history of Rogers Centre, eclipsing the previous low of 12,571 against Texas on April 30, 2002. Toronto's lowest attendance ever was 10,074 on April 17, 1979, against the Chicago White Sox.
"In order to get back to where we're going, we certainly need our fans out here," manager Cito Gaston said. "We need their support. Hopefully they'll realize that and come out and support us."
Pavano said he's enjoying being part of a playoff push in Minnesota after struggling through four injury-plagued seasons with the New York Yankees and a tough beginning of the year with the Indians.
"This is what we wake up every day thinking about, being successful, going out and doing your job, being part of a team and winning, the team concept," Pavano said. "I haven't been able to do that. I try not to harp on it too much and focus on it but it is a nice reminder of the hard work that I put in to get to where I am now."
Jose Mijares replaced Pavano with the tying run on second and got out of the jam by striking out Adam Lind and getting Lyle Overbay to ground back to the mound. Joe Nathan finished for his 38th save in 43 chances.
Minnesota's Brian Buscher matched a career high with three hits and is 5-for-7 against Halladay in his career.
Cabrera's shot snapped Minnesota's streak of 222 at-bats without a home run. Using Buscher's bat, Morneau homered for the first time since Aug. 25 when he turned on a first-pitch cutter and drove it into the lower deck in right.
"I've been struggling for a while," Morneau said. "Hopefully it's something that gets me going, gets us going. We're still in this race, we still have a chance. Maybe one big hit can get us going in the right direction. To beat that guy, as good as he was, especially early in that game, is huge for us."
Minnesota's Joe Mauer started at designated hitter and went 1-for-4, dropping his major league-leading average to .367.
Plate umpire Paul Nauert was hit in the mask by a foul ball in the bottom of the seventh. He was checked by Blue Jays trainer George Poulis and remained in the game.
Minnesota activated LHP Francisco Liriano (arm fatigue) off the 15-day disabled list. Liriano will pitch out of the bullpen for the remainder of the season. ... Toronto utilityman Joe Inglett (ankle) missed his second straight game. ... Toronto RHP Josh Roenicke, who has not worked since Aug. 28, was being rested because of a sore elbow but is available to pitch again, Gaston said. ... Transport Canada has approved the Blue Jays' travel plans for the final two road trips of the season after the team changed the destination of one flight to comply with newly enforced rules concerning charter airlines.