Silva (3-5) allowed six hits and struck out three in 7 1/3 innings, and the Twins won at home for just the third time in eight games.
"That was really nice to see him going deep in the game," said manager Ron Gardenhire.
A.J. Burnett (5-4) allowed three hits in eight innings for Toronto -- his fourth three-hit effort of the season -- but was hurt by his own defensive blunder.
With two outs in the third, Burnett walked Michael Cuddyer to load the bases. Morneau followed with a high chopper that Burnett barehanded to the right of the mound, but his throw to first was high and wide, allowing two runs to score. Burnett struck out Torii Hunter to strand runners on second and third.
"I never had a grip. I should have held it. I made a mistake and it cost us," said Burnett, whose three-game winning streak ended. He walked three and had eight strikeouts, three of them against Hunter.
Morneau slid into first base on the play, subjecting himself to ribbing from his teammates.
"That was funny, man," said infield hits leader Luis Castillo, who gave Morneau an "8" for his effort.
Morneau got back into character with a two-run, 433-foot homer to right field in the sixth. Outfielder Alex Rios didn't even turn to watch the ball land in the upper deck.
"It was the Justin Morneau show. That's why he's MVP," said Toronto manager John Gibbons.
Burnett, who threw 125 pitches, said he would have pitched two more innings if called upon because the Blue Jays bullpen also needed a breather.
Silva wasn't asked to go that long, but he gave his team exactly what it wanted less than 24 hours after Minnesota used all seven relievers in Saturday's 13-inning loss.
"That was great to see Carlos come out and deal like that. ... He was pretty fired up," Hunter said.
Silva had allowed 16 runs and 27 hits in 23 1/3 innings this month, including seven runs and nine hits in 4 1/3 innings in his last start, but he kept Toronto hitters off-balance most of the game. At one point, he retired 12 straight and 17 of 19 in lowering his ERA at home to 2.25.
"Today it was like I was trusting my sinker a little bit more and letting my sinker do the work," said Silva.
Silva has allowed three earned runs or less in eight of his 10 starts.
"He was changing speeds when he needed to. His fastball was working for him and he was keeping his pitches down," said Toronto's Vernon Wells, who finished 1-for-4.
Silva also got some defensive help when Morneau made a diving stop that likely robbed Matt Stairs of extra bases. Jason Bartlett also made a nice grab up the middle, where he spun and threw out Aaron Hill by a step.
What did Silva tell Rincon when he came in? "Nothing. You don't want to know," he said smiling.
Toronto scored its first run in the second, in a way that typified Silva's May misfortunes.
Ahead 1-2 in the count, Silva walked Frank Thomas, then watched Nick Punto mishandle a sharply hit ball by Hill. Jason Phillips followed with a ground ball up the middle just past a diving Castillo that scored Thomas.
Adam Lind homered in the eighth for Toronto.
- Bartlett started Sunday after missing five straight starts because of soreness in his neck and shoulder. He was a late-inning replacement in Saturday's game.
- Toronto 3B Troy Glaus, in an 0-for-16 slump, had the day off. He was replaced by Ryan Roberts.
- Gardenhire said C Joe Mauer could be activated from the 15-day disabled list before the team's homestand concludes Wednesday. He has been inactive since May 5 with a strained left quadriceps.