First, a quick caveat: no matter how you're checking your rankings, you're not seeing anything universal. There are no universal rankings, and haven't been for years, so if you see that you're ranking well for one term and not so well for another, that certainly doesn't mean that's what everyone running those searches experiences. Far more important than checking your rankings is looking at whether those keywords are bringing you traffic (which is harder to see than it used to be because of (not provided)) and whether the people arriving at your site via those searches are actually converting.
So, that being said, it is true that it's generally easier to rank for a long-tail phrase than a head phrase, but the fact that one query is longer by a word than another doesn't necessarily mean it's going to fit that pattern. It may be that the three-word phrase gets about as much volume as the two-word phrase (I imagine you've checked) and because of that, a lot of sites are targeting that phrase with as much effort as the other.
There's also the fact that on-page optimization is just one piece of the puzzle. You also have to think about the page's title tag, the way you link to it, the way others link to it, whether the page is recommended and discussed in social media and how much (and at what velocity), etc. So maybe you've got a decent number of links from sites with good reputations using the anchor text "pet supplies," and one of your competitor has a decent number of links from sites with good reps with the anchor text "pet supplies online." That can make a difference.
And going back to the on-page optimization, there is such a thing as overdoing it and making your content unnatural. If every instance of "pet supplies" on the page is also an instance of "pet supplies online," you're probably overdoing it. They may affect your ranking, and more importantly, it may make your pages less likely to convert. On-page optimization is mostly about getting the phrase onto the page, and not REPEATING THE PHRASE OVER AND OVER ALL OVER THE PAGE SO THE PAGE ABSOLUTELY SCREAMS THE PHRASE AND NOTHING ELSE IS NOTICEABLE. i haven't looked at your site, so of course I'm not suggesting you're doing anything like that, but I figure it's worth mentioning.