"I can't say enough about our guy behind the plate," Duffy said. "Salvy really killed it."
Duffy (2-0) pitched 6 2/3 shutout innings hours after being promoted from Triple-A. Minnesota lost its fourth in a row.
Perez hit a two-run homer in the fourth, a 415-foot drive into the upper deck in left field off Albers (2-2) that made it 3-0.
When Perez came up again in the sixth, Albers threw an up-and-in pitch that sent Perez tumbling to the ground.
The 23-year-old catcher, who missed a week with a concussion earlier this month, took his helmet off and pointed at his side, telling Albers to aim lower if he's going to throw inside. Albers held both of his arms out and had a few words of his own for Perez.
Home plate umpire Hunter Wendelstedt warned both benches. Perez then struck back by lining a single that whizzed over Albers' head.
"He got me hyped when he answered with the line drive up the middle," Duffy said. "I was very excited about that. Salvy's a monster back there. I can't really say anything else."
Perez hit another two-run homer in the eighth, connecting off reliever Casey Fien in the eighth.
Albers said he meant no harm with the pitch that sent Perez diving.
"I'm not trying to go after his head. I'm not trying to hit him in that situation," Albers said. "I am trying to go inside, and sometimes it gets away. Again, if I could throw 99 pitches exactly where I wanted to, I'm probably going to have a good night. But unfortunately that one did get away, and it didn't look very good.
"That's part of baseball. He dives in a little bit, and I don't even think it was all that far inside," he said.
Perez had his first career multihomer game. In 15 games against the Twins this season, Perez is hitting .410 with four doubles, three homers and nine RBIs.
Duffy was called up from the minors and replaced the struggling Wade Davis in the rotation. Duffy allowed five hits and struck out seven in his third start with the Royals since having elbow surgery last June.
"Sometimes he gets too excited on the mound, so I just tell him to keep down a little bit," Perez said about Duffy. "I tell him to work both sides of the plate and that's what he did tonight. That's why he was so good tonight."
Duffy has shuffled among Kansas City, Triple-A Omaha and Double-A Northwest Arkansas as he comes back from surgery.
In three August starts with the Royals, Duffy has a 1.10 ERA and has struck out 17. The tall and thin lefty hasn't given up a run in his last 12 2/3 innings.
"He had everything tonight," Royals manager Ned Yost said. "He's such a competitor, but he did a great job with his mound presence. He was in control."
The Twins struck out 10 times and set the club record for strikeouts in a season with 31 games to go. Minnesota batters have fanned 1,127 times, breaking the previous mark of 1,121 set in 1997.
Chris Colabello whiffed on a changeup from Duffy in the fifth inning to set the record.
"Well, we definitely care about it, because it's not fun. It's not fun watching guys strike out," Twins manager Ron Gardenhire said. "But you know what? They're going up there. They're working hard. They're doing everything they possibly can. It's not like they're trying to strike out."
Justin Morneau hit his 16th home run in the ninth to prevent the Twins from being shut out.
Alex Gordon hit a solo homer as the Royals beat Minnesota for the eighth time in their last nine games.
The Twins have scored a total of five runs during their four-game slide. ... Twins star C Joe Mauer, on the disabled list while recovering from a concussion, made progress on Wednesday, according to GM Terry Ryan. Mauer was at the ballpark, doing some stretching and other light exercises. "He is doing better," Ryan said. But Mauer won't travel to Texas for the weekend series. ... The Royals optioned Davis and reliever Louis Coleman to High-A Wilmington to make room for Duffy and Luke Hochevar, who returned from three days of paternity leave. By sending Davis and Coleman to Wilmington, the Royals can recall them by Tuesday since Wilmington finishes its regular season on Monday and likely won't make the postseason. ... X-rays were negative on Justin Maxwell's hand after the game. The Royals OF got hit in the ninth inning. ... Bruce Chen (5-2, 2.88 ERA) starts Thursday's series final. The lefty has pitched seven scoreless innings of relief against Minnesota this season. ... Samuel Deduno (8-7, 3.69 ERA) starts for Minnesota. Deduno is 3-1 with a 2.16 ERA in four career starts against the Royals.