Possible solution could be with using `awk`:
awk -F";" '{ for (i = 2; i <= NF; i++) { printf("%s;%s\
", $1, $i); } }' file
With `awk -F";"` we set `FS`(field separator) to `;`. Then for every row(record) we start from field 2 to the last field (`NF`): `for (i = 2; i <= NF; i++)` and we print field 1 and current field (`$i`).