Why use a CFG instead of a DFG
A control-flow graph serves a different purpose than a data-flow graph.  They aren't alternatives.  A control-flow graph represents the flow of control: which instruction can follow another.  A data-flow graph represents the flow of data: which instruction can read data that was created by another.

Perhaps you mean to ask why each vertex in a control-flow graph represents a basic block (a group of instructions) rather than a single instruction.  That's an optimization. You could have each vertex represent a single instruction, but often you'll have a long sequence of consecutive instructions with no control-flow transfer, and they all have the same properties, so it is natural to collapse them into a single vertex.  Also subsequent program analyses may be faster with this optimization; see Why is it better to do the data flow analysis in the basic blocks.