Expanding a Fusion Drive partition
The good message: you can resize both partitions with on-board tools. The bad message: you can't change the start block of a partition to a lower block number (i.e expand Data to lower block numbers). The partition Data has to be deleted first.

Preparation:


Backup your Mac
Safe all files and folders in Data to an external drive
If you don't have an external drive you can also save the files to Macintosh HD – if it contains enough free space for all files (~223 GB) and the expansion size of Data. Example: If you want to expand Data by 673 GB (to 1000 GB!) you need at least 926 GB (223 GB + 673 GB + ~30 GB some free space for the system) free space on Macintosh HD.
Detach any external drive (especially your external Time Machine backup drive)
Restart to Internet Recovery Mode by pressing alt cmd R at startup. Booting to Recovery Mode is not conducive because the Recovery HD will be moved in one of the steps below. And you can't move a partition used as a boot volume.  

The prerequisites are the latest firmware update installed, either ethernet or WLAN (WPA/WPA2) and a router with DHCP activated.
On a 50 Mbps-line it takes about 4 min (presenting a small animated globe) to boot into a recovery netboot image which usually is loaded from an Apple/Akamai server.

I recommend ethernet because it's more reliable. If you are restricted to WIFI and the boot process fails, just restart your Mac until you succeed booting.

Alternatively you may start from a bootable installer thumb drive (preferably Yosemite or El Capitan) or a thumb drive containing a full system (preferably Yosemite or El Capitan). If you boot to a full system and login as admin you have to prepend sudo to execute special commands like gpt ...!


Remove the partition Data and shrink the  CoreStorage Volume Group


Booted to Internet Recovery Mode open Utilities → Terminal in the menubar and enter:  diskutil list to get the disk identifiers and diskutil cs list to get a CoreStorage listing. Below I assume that your main disks have the disk identifiers disk0 (usually the SSD)/disk1(usually the HDD) and the CoreStorage Logical Volume disk2.
First you have to remove the Data partition:

gpt -r show /dev/disk1 #to get an overview


To remove a partition with gpt the disks (and all related disks like the inherent CoreStorage volume) have to be unmounted - first the CoreStorage Logical Volume and then the physical disks (SSD and HDD):

diskutil unmountDisk /dev/disk2
diskutil unmountDisk /dev/disk1
diskutil unmountDisk /dev/disk0
gpt remove -i 4 /dev/disk1 #remove the *Data* partition

Then you have to resize the Logical Volume Group:

diskutil mount /dev/disk0s2 #mount the physical volume of the CoreStorage Logical Volume Group
diskutil mount /dev/disk1s2 #mount the physical volume of the CoreStorage Logical Volume Group
diskutil mount lvUUID #lvUUID: the logical volume UUID - in your case 03BC8817-F05E-4FC3-9A5C-50130CDAB3AB
diskutil cs resizeStack lvUUID size


in your case (assuming you want to "resize" Data to 1000 GB (3121 GB-1000=2121 GB):

diskutil cs resizeStack 03BC8817-F05E-4FC3-9A5C-50130CDAB3AB 2121g


Your Recovery HD should be moved automatically - regardless of whether shrinking or expanding the CS volume - to the very end of it.
Enter the following to get the new partition scheme:

gpt -r -vv show /dev/disk1

To add a partition with gpt the disks (and all related disks like the inherent CoreStorage volume) has to be unmounted

diskutil unmountDisk /dev/disk2 #use the diskidentifier of the CS logical volume
diskutil unmountDisk /dev/disk1 #use the diskidentifier of the HDD
diskutil unmountDisk /dev/disk0 #use the diskidentifier of the SSD

Enter 

gpt add -b StartBlock -s NumberOfBlocks -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk1


to create a new HFSJ+ partition on disk1. StartBlock is the number of the first block in the unallocated space and NumberOfBlocks is the number of free blocks or smaller. NumberOfBlocks has to be equally divisible through 8!

Example:  

if the result of gpt -r -vv show /dev/disk1 is

gpt show: /dev/disk1: mediasize=68719476736; sectorsize=512; blocks=134217728
gpt show: /dev/disk1: PMBR at sector 0
gpt show: /dev/disk1: Pri GPT at sector 1
gpt show: /dev/disk1: Sec GPT at sector 134217727
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  104974016      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  105383656    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  106653192   27564503      
  134217695         32         Sec GPT table
  134217727          1         Sec GPT header


then StartBlock would be 106653192 and the NumberOfBlocks  (27564503/8=3445562,875 -> 3445562*8) 27564496

The resulting gpt command to create a new JHFS+ partition occupying all available free space would be:

gpt add -b 106653192 -s 27564496 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk1

Enter exit and quit Terminal
Open Disk Utility and erase/initialize the newly created volume
Check the main volume Macintosh HD for errors
Quit Disk Utility and reboot to your main volume