Gordon was 3-for-24 coming into the game before hitting his first spring home run. He is still trying to get his timing down after offseason right wrist surgery.
"It's not bad," Gordon said. "I feel like I'm doing pretty good getting ready for the season."
Royals starter Jason Vargas went five innings and gave up five runs. He allowed seven hits, one walk and struck out five. The lefty now has a 9.68 ERA on the spring.
Four of the Rangers' runs came on home runs by Adam Rosales, Leonys Martin, Jake Smolinski and Ryan Rua. Martin had three hits and is hitting .306 for the spring.
Bonilla's short start allowed Jamey Wright to pitch 2 2/3 scoreless innings in long relief. That is his second straight multiple-inning scoreless outing.
"Jamey came in and gave us a cleanup inning, and then pitched a couple more innings," Rangers manager Jeff Banister said. "He mixed his pitches well, kept his fastball down and kept his breaking ball in play. He gave us what we needed."
Jason Frasor pitched a scoreless inning for the Royals and has a 0.96 ERA for the spring.
Bonilla started for the Rangers because Ross Detwiler did his work in a "B" game on the back fields. He went 6 1/3 innings against Minor League hitters and allowed two runs on eight hits with one walk and six strikeouts.
Up next: Left-hander Derek Holland will pitch against the Cubs in Surprise, Ariz., while Nick Martinez goes against the D-backs in Scottsdale. Both split-squad games are slated to start at 3:05 p.m. CT. Watch the game against the Cubs live on MLB.TV. Holland will be making just his second start in a Cactus League game after being limited in the first half of Spring Training by some shoulder soreness. Martinez has been full speed from the beginning and has won a spot in the rotation.
T.R. Sullivan is a reporter for MLB.com. Read his blog, Postcards from Elysian Fields, and follow him on Twitter @Sullivan_Ranger. This story was not subject to the approval of Major League Baseball or its clubs.