How instruction skipping is avoided during procedure calls in pipelined architectures?
Reading through the reference manual on the X86 assembly...
https://courses.cs.washington.edu/courses/cse548/05wi/files/x86-reference-long.pdf

you will find this...
"The call instruction calls near procedures using a full pointer. call causes the procedure named in the operand to be executed. When the called procedure completes, execution ﬂow resumes at the instruction following the call instruction (see the return instruction)"

This tells you that the call has to return first. This means that when run, noop instructions will be placed after it until it returns.

Immediately after this is called, the Control block will determine it is a call, which is a command requiring action by the hazard detection unit. This unit fires off what is essentially a call interrupt. So immediately upon seeing this instruction this interrupt occurs to call noops and will not allow PC to increment.