Your page ranks for the terms it actually answered well, not the one you aimed it at, because Google ranks pages by what their content genuinely satisfies, not by what you intended the page to be about. So this isn’t a mystery you fix by stuffing the head term in more times; the keyword count was never the lever. The page is ranking exactly where its content earned it, which happens to be the incidental terms rather than the main one.
Two things are usually behind the missed head term. The first is intent fit. The term you targeted may want a different kind of page than you wrote: if you aimed at a commercial or local query but produced an informational article, Google won’t slot that article into a results page it fills with product or map listings, so your content gets matched instead to the informational phrasings it really does answer. The page didn’t fail; it answered a different intent than the head term carries. The second is competition. The main term may simply be more contested than you can win right now, while the long-tail variants you landed on are less crowded, so that is where the page surfaces. Either way, the page is telling you what it is actually about.
That makes the accidental rankings useful rather than annoying. They are a readout of what your content genuinely covers and what Google trusts it for. Pull the queries your page already ranks for and read them as evidence, then decide from there: either re-aim the page to match the head term’s real intent and competition, or lean into the terms it is already winning, instead of reaching for the keyword you wish it ranked for.