Gordon was hitless in 13 at-bats and 1-for-24 (.042) this season when the rookie hit a two-run homer in the sixth against Josh Towers (0-1) that boosted Kansas City's lead to 4-1.
"It felt good to finally hit a ball hard," said Gordon, who intends to give the ball to his younger brother. "It felt good rounding the bases, coming in and slapping hands with the guys. Hopefully, there's more to come."
Greinke (1-1), who pitched in just three games last season because of depression and social anxiety, allowed one run and six hits in six innings, struck out five and walked none.
"We're all real happy for him," Royals manager Buddy Bell said. "His issues are well documented, and it's nice to see he's doing so well."
The 23-year-old right-hander is pitching with renewed confidence.
"I have a better mind-set," he said. "I'm just confident and always take the mentality that I'm going to do better than the hitter or that I'm better than the hitter if I make my pitches."
"He carved us up pretty good," Blue Jays manager John Gibbons said.
Rookie Joakim Soria pitched two perfect innings for his first career save, ending Toronto's three-game winning streak.
"He didn't throw many pitches in the eighth and I just thought, 'Why not?'" Bell said.
Towers allowed six runs -- three earned -- and 10 hits in 5 2/3 innings, struck out six and walked none. Last year, he lost his first nine decisions and finished 2-10 with an 8.42 ERA.
"I don't know if I found anything positive today," Towers said. "There were a lot of things that went wrong. We didn't play the best baseball game, and it's kind of frustrating because I don't know how much positive I got out of today."
One night after a sellout crowd of 50,125 watched Toronto's home opener, the game drew 22,106 to Rogers Centre.
Mike Sweeney's sacrifice fly put Kansas City ahead in the first. Greinke escaped trouble in the bottom half after Alex Rios led off with a double and moved to third on a Lyle Overbay's grounder, with Wells flying out and Thomas taking a called third strike.
David DeJesus tripled in the third and scored on Mark Grudzialanek's single, but Rios had a two-out RBI single in the fifth.
Gordon homered after Sweeney reached on a throwing error by third baseman Glaus, and Tony Pena Jr. hit a run-scoring triple that chased Towers. DeJesus, who had three hits, added an RBI single.