The 34-year-old had three hits on the night and was playing second base because All-Star Aaron Hill was home in Palm Harbor, Fla., where his wife, Elizabeth, gave birth to a daughter on Monday night.
McDonald's second homer of the season in his 85th at-bat, a low drive over the left-field wall, on a first-pitch fastball from towering Twins reliever Jon Rauch made a winner out of Ricky Romero, who allowed seven hits and three runs in 6 2/3 innings.
Jason Frasor pitched the ninth inning to earn his seventh save.
It was the 11th home run of McDonald's career and his first three-run homer, though he does have a grand slam. His career-high in a single season is three.
"It's been a tough year for a lot us," McDonald said. "Everybody wants to finish the year strong. We're not where we want to be, so any positive you take from these games is good for everybody."
McDonald, a splendid defensive shortstop by trade, also has played third base and left field this season. He also is the emergency backup catcher. He was involved in three double plays Tuesday night, including one started by his catch on a line drive.
"Obviously you'd love to play more but that's not what you focus on," he said. "You come to the ballpark every day from the beginning of the year and get ready to play.
"And my job was pretty well-defined at the beginning of the year especially with the way Marco [Scutaro] and [Hill] have played. They didn't get too many days off but if they needed one you want to be prepared to do your best."
"I'm happy for him, because he's been just a perfect citizen on this club," manager Cito Gaston said. "He hasn't had the opportunity to play a lot and he's never complained. He just continues to let me know he's ready whenever I need him. I'm happy to see him do what he did, it was big for the team and for himself. And he turned a nice double play for us."
Romero gave up one run in the first on Justin Morneau's double and two in the third on Jason Kubel's double. But helped by two double plays, he pitched to the minimum number of batters in the next three innings and retired the first two batters in the seventh before giving up a walk. Jesse Carlson came in to finish it off.
"[Romero] pitched pretty good," Gaston said. "He gave up three runs the first three innings and then after that he pitched three real good innings."
"It was a good all-around win," Romero said. "We played really good defense and we got key base hits and our bullpen did a good job. I think early in the game they got some base hits on good pitches. You just have to hold your head high and not let it get to you."
Romero said he did regret not putting hitters away after he was ahead in the count.
"I made too many pitches," said Romero, who threw 104 pitches. "I'm disappointed in the three walks."
Brian Duensing, who was making his fifth career big league start for the Twins, was charged with three runs on six hits in five innings plus three batters in the sixth.
The Twins scored once in the first and it might have been worse for the Blue Jays if catcher Raul Chavez had not picked off Denard Span at third base. Span started the game with a double and took third on a groundout. After he was picked off, Kubel walked and scored on Morneau's ground-rule double. The Twins scored twice in the third, sparked by Span's double, Orlando Cabrera's single and Kubel's two-run double.
The Blue Jays took over in the sixth. After they loaded the bases with no one out on singles by Jose Bautista and Adam Lind and a walk to Vernon Wells, Rauch replaced Duensing.
Randy Ruiz hit a sacrifice fly to center. Kevin Millar walked to load the bases again and Edwin Encarnacion tied the game with a single that handcuffed third baseman Brendan Harris. And then McDonald hit his homer.
And the message could have been: Take as long as you need Aaron.