Core box bit in router.
I place the cutting board on a piece of MDF and screw a fence with spaceers into the MDF, locking the board into place. I put a full span spacer block between the fence and the board depending on where the blood groove is going to go to account for the distance between the plunge router base edge and the bit. Then I place the entire setup on sawhorses in the middle of my garage so I can move 360 degrees around the board when I'm routing the groove. This allows me to push evenly against the fence on each side of the cutting board, instead of pushing on half and pulling on the other. When I take the time building this style of jig for each individually sized board, it has never failed me. I have tried it using the fence on my router and it never comes out right. By locking a fence all the way around the board and then moving myself around the piece, the results are dead on. Typically 2-3 passes gets me where I need to be. I have done this with hard maple, purpleheart and walnut with no issues. Edge grain and end grain.
Very similar to the video that JOE SCHARLE posted above, but I don't get super fancy with the fence and spacers, just jointed and planed 2x4. This was necessary to get the height when putting a blood groove into a 3" end grain chopping block that I made for a chef friend of mine out of hard maple.