Giants left-hander Jeremy Affeldt threw 30 "competitive pitches" Tuesday afternoon in San Diego, an important step in his recovery from the strained left groin that has sidelined him since July 20.