Define a maximal subgroup of a group to be a proper subgroup not contained in any larger great subgroup. They always exist in nontrivial finite groups, since you can begin with the trivial subgroup; if it is maximal, you win, and if it is not then some other proper subgroup contains it; if that is maximal, you win, and if not ... and so on. A strictly increasing chain of proper subgroups must terminate, in a finite group. More generally if the group is nontrivial and "Noetherian" (I made that up) then maximal subgroups exist.
Fix the prime $p$ and induct on the exponent of the $p$-group $G$. Let $M$ be maximal. If $M\supseteq Z(G)$ then, much as you say, it is easy: the quotient map $q:G\to G/Z(G)$ sets up a correspondence between subgroups of $G$ containing $Z(G)$ and subgroups of $G/Z(G)$, and normal subgroups correspond with normal subgroups via $q$; as $Z(G)$ is famously nontrivial in a $p$-group, the inductive hypothesis applies and $M/Z(G)$ is maximal thus normal, thus $M$ is normal (both by the correspondence) and moreover: $$[G:M]=|G|/|M|=(|G|/|Z(G)|)/(|M|/|Z(G)|)=[G/Z(G):M/Z(G)]=p$$As desired.
If $M$ does not contain the centre, $M\cap Z(G)$ is a proper normal subgroup of the Abelian $p$-group $Z(G)$ and $Z(G)/M\cap Z(G)$ is thus a $p$-group. Famously, ("Cauchy's theorem") it must then have an order $p$ element. Let $\zeta\in Z(G)$ represent this order $p$ element; then $\zeta^p\in M$ and $p$ is the smallest positive integer for which this is true.
Cosets partition, and $gM=M$ iff. $g\in M$, so it is clear $\{M,\zeta M,\zeta^2M,\cdots,\zeta^{p-1}M\}$ is a set of $p$ distinct cosets. As $\zeta^p\in M$ and $\zeta$ commutes with every element of $M$, $\langle\zeta\rangle\cdot M=M\cdot\langle\zeta\rangle=\bigsqcup_{j=0}^{p-1}\zeta^jM$ is a subgroup of $G$ (it is well-known and easy to show that for $H,K\le G$, $HK$ is a subgroup of $G$ if one assumes $HK=KH$).
$M$ is a proper subgroup of $\langle\zeta\rangle\cdot M$ so by maximality of $M$ we must have $\langle\zeta\rangle\cdot M=G$ - then $G$ is the union of those $p$ cosets, so $[G:M]=p$ as desired. $M$ is moreover normal, since we know the generic element $g\in G$ is of the form $\zeta^j\cdot m$ for some integer $j$, some $m\in M$ - where, recall, $\zeta$ commutes with every element of $G$ - so if $x\in M$, $gxg^{-1}=\zeta^jmxm^{-1}\zeta^{-j}=\zeta^j\zeta^{-j}\cdot mxm^{-1}=mxm^{-1}\in M$ as required.
Maximal subgroups of a $p$-group always exist, and are always normal of index $p$.