It was southpaw Moreno's (33-2-1) first defeat in a decade, taking in 27 fights. The 27-year-old's only previous loss came against fellow Panamanian Ricardo Molina in 2002.
Unbeaten Mexican Mares, 26, improves to 25(13)-0-1 after attacking throughout the 12 rounds.
The elusive Moreno, who had never been knocked down before Saturday night, hit the canvas in the fifth round after a three-punch combination in the corner.
"I could tell he felt my power and my aggression," Mares said. "He did take advantage of me when I waited too long, but he's a super champion and he gave me hell.
"I couldn't let him get comfortable with his style, because he's very good. I made it my fight tonight.
"I was a little shocked when he went down. I felt the punch, but didn't think it was that powerful."
Moreno came out fighting from the eighth round on, with both fighters connecting with shots, but lost on the cards 116-110 116-110 120-106.
"The fight should have been closer," said Moreno. "I'm unhappy that the one judge didn't give me at least one round, but Abner fought a great fight.
"He's a great champion. He was very strong, and I got caught by his shots. I was careless when I went down, but it was a great fight for the people. I'm happy for that."
Moreno was docked a point in the 11th round for pulling down Mares's head in a clinch.
Leo Santa Cruz defended his IBF bantamweight title with a ninth-round stoppage of fellow Mexican Victor Zaleta.
Undefeated Santa Cruz (22-0-1) had the challenger on the deck in the fourth and seventh rounds.
Zaleta (20-3-1) was floored for the last time underneath the ropes in the ninth by a straight right.
"He made this a fight," said Santa Cruz. "I was working the head and his body, and I finally caught him and he went down. He was blocking my shots at first, but I kept working."
Santa Cruz hopes to fight Mares next year.