"I don't know what to tell you other than we're playing good baseball," Gibbons said.
Happ allowed three runs on seven hits over 6 1/3 innings to record his fifth win. He allowed five leadoff batters to reach safely, but he was able to battle out of jams and keep the damage to a minimum.
"They had some guys on base and had some chances to tack on some runs, but he got out with some big pitches and some big plays behind him," Gibbons said.
After allowing two runs in the third, Happ got picked up by the offense and the defense. With the bases loaded and one out in the fourth, designated hitter Dioner Navarro singled home a run and catcher Erik Kratz singled home two more, giving the Jays a 3-2 lead.
In the bottom of the frame, the Blue Jays' defense nearly turned a double play and then threw out a basestealer. After the Tigers tied the game in the fifth, Juan Francisco took a Justin Verlander changeup to right field for a two-run homer. Brett Lawrie followed with one to the left-field seats to push the lead to 6-3. It marked the fifth time this season the Blue Jays have hit back-to-back home runs.
It was the 10th home run of the season for both Francisco and Lawrie. For Lawrie, it's one shy of his career-high of 11 in each of the past two seasons. A ninth-inning solo homer for Melky Cabrera gave the Blue Jays five players with at least 10 home runs. Toronto leads the majors with 87 homers, 12 ahead of the second-place Rockies.
"We're getting pitches we can handle and just putting good swings on the ball," Lawrie said. "That's the biggest thing, getting ready to hit. Obviously, against a guy like [Verlander], you've got to be ready to hit, because he's one of the best in the game and you've got to be ready to hit."
The Blue Jays' defense turned two in the sixth, and righty Chad Jenkins induced a 1-6-3 double play in the seventh in relief after Happ allowed a runner to reach after recording an out.
"My first two pitches to [Nick] Castellanos, I left them up. I just felt like I was underneath the ball," Jenkins said. "Sure enough, I got on top of the next one and he hit a nice little soft one back to be to get out of that inning. It was nice."
Jenkins allowed three baserunners over 2 1/3 innings before Casey Janssen came in for a one-pitch save in the ninth. It was the longest of five Major League outings this season for Jenkins, who has constantly moved between Toronto and Triple-A Buffalo this year.
Jenkins pitched a perfect inning against the Tigers on Wednesday night, and for Gibbons to go with him in a big spot on Thursday was a sign of confidence.
"Jenkins did a great job for us last year. He was kind of that bubble guy this year coming out of Spring Training, one of those guys," Gibbons said. "He's a ground-baller and he throws strikes. We were a little beat up down there, so this was an opportunity to show us what he could do.
"He did good last night in one inning and was great today. Big plays getting that comebacker and double play to stop a potential rally. He throws strikes, he's got that good two-seam fastball."
The Blue Jays return home looking to continue the momentum against the Cardinals. Toronto has its largest division lead of the season and has swept each of the other AL division leaders since May 23. The Blue Jays have six sweeps this season after recording five in 2013.
"We're just coming to play," Lawrie said. "We're worried about us. We're not worried about what's going on across the field. We're worrying about what we've got to worry about as a team and just executing what we need to do.
"Happ threw the ball very well today. They got some runs on us early, but we battled back, got back on top and he went to work. That's the biggest thing we need to take care of."
Chris Vannini is a contributor to MLB.com.
This story was not subject to the approval of Major League Baseball or its clubs.