Having worked with multiple companies in St Louis for rankings, it can be difficult.
I agree with Jeff that people search for things adjacent to their exact neighborhood, as metro St Louis is a very small portion of the "city". There are also people that search for items using the STL, Saint Louis, and St Louis (St Louis being the local lingo and the most popular)
Before you begin modifying anything, I would manually go and check that your keyword reporting tool is working correctly (AWR, MOZ, or whatever you use). Go to Google and see that your suspicions are correct. If they are, then proceed to do the following. Also double check in Bing and Yahoo to see if there are any trends. Chances are if you suck at ranking across all search providers for St Louis, you need more local authority.
1. Manually track what keywords and phrases that rank low. Look at competitor keyword phrases and SEO for signs of what Google is giving the authority status to, and then look for why.
2. Look at the backlinks of those sites. Having worked with a lot of local companies, most high ranking sites are pretty good about doing their citation site and local optimization. Being a larger focused company, you will have to think of ways to get your St Louis-specific content to become "more valued" and authoritative than the local sites that offer the same services. For example: If a local provider has a 100 backlinks from local St Louis citations, all stating that he does "KEYWORD in St Louis" you are going to have to prove that your St Louis content deserves that spot.
3. Look at avenues within the local area where you can distribute content and get people linking back. Easiest and fastest way? Most likely a few Press Releases from one of the larger companies with a wide distribution network that can hyper-focus your content to St Louis. Look for openings or opportunities from The St Louis Business Journal, St Louis Post Dispatch, Local Channel 5, STLtoday.com and any other major news outlets. All of these sites have very high page ranks, and domain authority. Link these releases back to your local St Louis content in various ways and formats, but "St Louis" will most likely be your best bet since most locals type it that way.
4. "My question may be more related to on-page optimization. We rank pretty well when adding the various keyword modifiers at the end of the regular keyword" The on page optimization will have to cover the St Louis area (unless you use those pages to rank in multiple areas under the main keyword phrase), for all of the reasons mentioned above. I know that you are trying to use the local setting within Google, but that is only so accurate as your physical IP is going to be from a different place. Might be worth it to set up a few localized pages on your site to see if it makes a difference in your placement.
5. You also may be seeing this change as a part of the algorithm updates, that do more to separate local and nationwide search. Seems like they are going away from using the IP and location information as one of the most important factors, as users search queries often include the location if they are looking for local. People's search habits change, and Google responds.
Hope any of this helps, and best of luck!