i had this problem before...i found out the best thing you can do is to get fast tank against an expoing zerg and quickly contain him and push forward asap.
I'll give a simple build order
8 supply
10 rax
11 rax
after first rax done, build supply
18 geyser, and add 2 scv on it when finished
build ONLY 6 RINES and hold your ramp, you need to save money for tech
23 factory
25 or 26 academy
after you begin your factory or academy, start building rines up to 12, and get 3 medics. Remember to have 300/250 when the addon for fac is complete so you can get siege mode and tank. Save stim research for when u are going to attack him, or when u have minerals.
Start to contain him when u have 1 tank, 12 marines, and 3 medics, bring along 1 or 2 scv. Siege his sunkens, build an e-bay outside his base and float it for further vision, keep building tank and marines and rally them to opponent's base. Build 1 or 2 turrets outside his base for detection, and maybe a bunker if u think u will need it. This will make any attemps from mutas or lurkers trying to break out futile.
If you scan and see mutas, make a couple of turrets around the your CC and a bunker, fill it with 1 or 2 marines. The zerg cannot afford to use their mutas to harass you because you are pushing forward and are going to kill their expo. Even if they do, they will soon retreat back to their base so don't worry about it too much.
Keep going on from there...
This strat works incredibly well because by the time you start a factory, the zerg can't even start their lair, so you have a huge advantage. By the time you get to his base, his lurker research will probably be 1/2 done, or his spire will be 1/2 done.