Standing opposite a dominant Jason Vargas, who tossed 7 2/3 scoreless innings, Hahn held the Royals to three runs -- two of them coming in a busy opening frame, before he settled down nicely.
"That was the most impressive thing for me with him," A's manager Bob Melvin said. "In the past, maybe some of these games, he might've gotten a little frustrated and let it get away from him, but he didn't today."
Hahn was left off the Opening Day roster, instead sent to Triple-A Nashville as the A's opted to make right-hander Raul Alcantara their fifth starter. But Alcantara stumbled in his first start of the season, opening an opportunity for Hahn to put together six innings of two-run ball in relief against the Rangers in the same game -- and claim his rotation spot for Thursday's start at Kauffman Stadium.
The way things unfolded in the early going, it appeared Hahn was in danger of being pulled in favor of Alcantara, now in the bullpen. But Hahn, who yielded hits to the first three batters he faced, a couple of the bloop variety, allowed just three more the rest of the way.
Hahn held the Royals to 2-for-9 with runners in scoring position.
"They came out really aggressive, swinging the bat early in the count, but I think [catcher Stephen Vogt] did a great job tonight mixing in pitches," Hahn said, "and we kind of got on a roll later in the game.
"I don't want to say they're unlucky hits, because they played good baseball the first inning. I thought I made some great pitches, they were just able to find some holes."
The Royals' only other run came in the third, when Lorenzo Cain reached on an infield single and, after advancing to second when Eric Hosmer walked, stole third and scored on Brandon Moss' sacrifice fly.
From the fourth inning on, Hahn needed just 35 pitches to get through his final three frames, to finish at 98 overall. Similar performances will keep Hahn, who was the A's No. 3 starter in 2015, in this rotation.
"His command probably wasn't great early on, but really he just got nicked up a little bit and ends up with three runs in six innings, and when he leaves, obviously it's 3-0," Melvin said, "but we get a couple guys on and still have a chance."
"He was tough," Cain said. "Made some good pitches. Good fastball. We were able to get some infield hits, get the ball in play, use our legs."
Jane Lee has covered the A's for MLB.com since 2010.