The study of the impact of noise on quantum circuits is especially relevant to guide the progress of Noisy Intermediate-Scale Quantum (NISQ) computing. In this paper, we address the pulse-level simulation of noisy quantum circuits with the Quantum Toolbox in Python (QuTiP). We introduce new tools in qutip-qip, QuTiPs quantum information processing package. These tools simulate quantum circuits at the pulse level, fully leveraging QuTiPs quantum dynamics solvers and control optimization features. We show how quantum circuits can be compiled on simulated processors, with control pulses acting on a target Hamiltonian that describes the unitary evolution of the physical qubits. Various types of noise can be introduced based on the physical model, e.g., by simulating the Lindblad density-matrix dynamics or Monte Carlo quantum trajectories. In particular, we allow for the definition of environment-induced decoherence at the processor level and include noise simulation at the level of control pulses. As an example, we consider the compilation of the Deutsch-Jozsa algorithm on a superconducting-qubit-based and a spin-chain-based processor, also using control optimization algorithms. We also reproduce experimental results on cross-talk noise in an ion-based processor, and show how a Ramsey experiment can be modeled with Lindblad dynamics. Finally, we show how to integrate these features with other software frameworks.