OP - your shifter has two functions - shifting gears and trimming the derailleur. The trimming function allows you to change the position of the front derailleur slightly to compensate for the position of the chain on the rear derailleur so the front cage doesn't rub on the chain. If you use a half-hearted or tentative motion when you move the shift lever, you may just be trimming it, not actually shifting. This could cause the erratic performance you describe. When you're shifting up or down on the front rings, make a full motion with your shifter, then trim it after the chain moves across. Warning - if your derailleur throws the chain off to the inside, you need to adjust the limiter screws on the mechanism.