Look at your sitemaps and see that you aren't listing the same content different ways. You don't want G to crawl the same content as a tag, archive, category and page or post. Pick one format and noindex the others. It can help if you block crawling (Disallow in robots.txt) for the URLs you don't want indexed. If you need a plugin for it, I suggest YoustSEO but there are others.
Does google give any hints about how it learned about the nonexistent URL? Sometimes it just makes things up. But other times you'll find it listed as either "in sitemap" (meaning some sitemap within the present geological era, not necessarily your current one) or some referring page.
If there are lots of requests and you can't pinpoint the source, it may be necessary to edit your htaccess file to put in some manual redirects. (Or, if nobody but google is making the requests, serve a 410 to make them go away.) This is Not Fun when you're working with a cms that has its own ideas about what belongs in the htaccess file.