We present a semi-analytical model of satellite galaxies, SatGen, which can generate large statistical samples of satellite populations for a host halo of desired mass, redshift, and assembly history. The model combines dark matter (DM) halo merger trees, empirical relations for the galaxy–halo connection, and analytical prescriptions for tidal effects, dynamical friction, and ram-pressure stripping. SatGen emulates cosmological zoom-in hydrosimulations in certain aspects. Satellites can reside in cored or cuspy DM subhaloes, depending on the halo response to baryonic physics that can be formulated from hydrosimulations and physical modelling. The subhalo profile and the stellar mass and size of a satellite evolve depending on its tidal mass-loss and initial structure. The host galaxy can include a baryonic disc and a stellar bulge, each described by a density profile that allows analytic satellite orbit integration. SatGen complements simulations by propagating the effect of halo response found in simulated field galaxies to satellites (not properly resolved in simulations) and outperforms simulations by sampling the halo-to-halo variance of satellite statistics and overcoming artificial disruption due to insufficient resolution. As a first application, we use the model to study satellites of Milky Way (MW)- and M31-sized hosts, making it emulate simulations of bursty star formation and of smooth star formation, respectively, and to experiment with a disc potential in the host halo. We find that our model reproduces the observed satellite statistics reasonably well. Different physical recipes make a difference in satellite abundance and spatial distribution at the 25 per cent level, not large enough to be distinguished by current observations given the halo-to-halo variance. The MW/M31 disc depletes satellites by ${\sim } 20{{\ \rm per\ cent}}$ and has a subtle effect of diversifying the internal structure of satellites, which is important for alleviating certain small-scale problems. We discuss the conditions for a massive satellite to survive in MW/M31.