Stuttgart beat Mainz 3-1 to stay third in the Bundesliga, keeping their Champions League hopes truly alive.