My process is the following:
- Look for a return ticket between A and BC, (mentally) note the name of a city (CB) that you are interested in visiting and where you find a cheap connection. You can use any flight search website for this.
- Use ITA Matrix and manually look for a ticket going from A to CB, C to B to C, and BC to A together. You need to use the “multi-city” option (the third tab) to be able to do that and. Using this instead of a simpler flight search lets you can also specify how flexible you are with the dates for each of the legs.
- Once you find something you like, go to the relevant airline website (or possibly an online travel agent) to book the ticket, using the exact same route and dates in their “multi city” search.
Sometimes you will stumble upon attractive fares where adding a stopover does not change the price. Sometimes the price will be different but still better than a series of one-way fares or separate trips. And sometimes adding the stopover will make the ticket horribly expensive and you simply cannot visit this city on the cheap using this trick.
@Doc wrote a great answer explaining why that is and how it works behind the scenescenes but I am not aware of any tools or search engine that would search for good stopovers for you. Checking fare rules requires a paid tool and combing through hard-to-read text. Running a couple of additional searches can be faster and a powerful multi-city search tools like ITA Matrix will help you figure out what's available and surface relevant fares for your destination.
Theoretically, it's also entirely possible that a ticket with a stopover could be even cheaper than the original return fare so this approach could miss some good combos but I don't think that's common.