The Cubs lost a series-opening game for the first time since May 5 at Cincinnati. Chicago had won its past 10 series-opening games.
Burnett (6-6) improved to 3-0 in four career starts against the Cubs, allowing two runs and four hits in five-plus innings. He walked four and struck out seven.
Relievers Brian Wolfe, Shawn Camp, Jesse Carlson and Scott Downs bridged the gap to closer B.J. Ryan, who worked the ninth for his 14th save in 16 opportunities.
Alex Rios went 3-for-4 with two doubles and Toronto won for just the fourth time in 12 games.
Burnett survived a 33-pitch first inning, walking the bases loaded but getting out of it when Geovany Soto flied out.
Toronto put runners at first and second with two out in the second, but Jim Edmonds ended the inning with a running catch of David Eckstein's sinking liner. Edmonds then exchanged greetings with his former St. Louis teammate as he came off the field.
The Blue Jays opened the scoring in the third, when Stairs and Rolen each hit balls that Edmonds could not catch. Stairs followed Rios' double with a two-run blast to right, his eighth, and Rolen followed with a ball that hooked over the wall in left, his third.
It was the first time this season the Blue Jays have hit back-to-back home runs, and the first time they have hit more than one homer in an inning.
Chicago replied in the fourth when Kosuke Fukudome singled and scored on Edmonds' double, cutting the gap to 3-1.
The Cubs chased Burnett in the fifth after Fukudome began the inning with a single and Soto walked. Wolfe came on and gave up a single to Edmonds, but the ball hit second base umpire Jeff Nelson on its way through the infield. Fukudome came around but crew chief Tim Tschida sent him back to third, leaving the bases loaded. One out later, Eric Patterson singled Fukudome home, but the rally ended when Ryan Theriot hit into a 6-4-3 double play.