Another awk-based solution using a double-pass approach (requires GNU awk or mawknawk for the gensub() function):
awk -F';' 'FNR==NR{if (NF>1) data[++i]=gensub(/^[^;]+/,"","1");next}
{if (NF==1) $0=$0 data[j+1]; else j++;} 1' input.csv input.csv
This will scan the file twice. The first time, it creates an array of "data parts" of those lines that contain more than one field. The second time, it substitutes the data part where it is missing, and increases the array counter every time it encounters a "complete" line so that the next data part is substituted for the following lines.