Abram nipped in ahead of goalkeeper Ederson to nod home a free-kick with six minutes remaining to end Brazil's unbeaten run which began after the 2018 World Cup in Russia.
Brazil, who beat Peru in the final of the Copa America just two months ago, started without Neymar, Dani Alves and Thiago Silva, all of whom were rested, and they looked like they missed their stalwarts.
Although Richarlison was busy up front, forcing Pedro Gallese to tip one fierce shot round the post, Brazil never looked in full control of the game.
Even the second half introduction of Neymar and attackers Vinicius Junior, Lucas Paqueta and Bruno Henrique, could not lift Brazil, who lost to Peru for just the fifth time in 46 games.
"We had chances and they punished us from a dead ball situation," said full back Fagner.
It's a learning process and we'll grow from this, defeats happen and we need to take what we can from it.