We can see with Cain's reaction that his heart was not right. By killing his brother, instead of asking for forgiveness, God saw the real Cain behind the offering.
The only word that is a clue to Abel's offering being better than Cain's is the word "firstborn." By offering sacrifices from the firstborn of his flock, Abel gave the best part of the animal (the fat portions were used to make other foods tasty) from the best animal of the flock.
Abel didn't choose the fourth or fifth or whatever animal looked defective or unuseable. He picked the firstborn even if it was the best animal of the litter.
He showed that God deserves FIRST PLACE.
Cain may have gathered a pile of fruits and vegetables in no random order or significance. Maybe they were leftovers or bruised bananas.
Cain could have asked for forgiveness then tried harder the second time. Instead he took it personally and killed his brother.
Cain wanted first place.