Garcia, who has now won all 30 of his fights as a pro, dominated the early rounds and then held on to edge his fellow American for the decision.
Two of the judges gave Garcia the verdict by 115-113 while the third scored it a 114-114 draw.
Garcia was more aggressive in the early stages of the bout but Peterson frustrated him at times with his nimble footwork and took control later on, capping his night with an impressive performance in the 12th round.
Garcia said: ???I knew it would be a tough fight and I told him you can’t win a big fight by running.
“He came strong at me, because he knew he was losing on points.”
Peterson was not happy with the decision and said: ???I am not so sure I gave him the early rounds.
“He was missing a lot of punches and I was landing my jab. I would love a rematch.”
Both Garcia and Peterson hold lightweight titles but Saturday’s bout was held at the catch weight of 143 pounds.
The fight was announced on January 14 as part of NBC???s prime-time boxing series but Garcia then said he did not have time to make the mandatory 140-pound weight.